Esempio n. 1
0
        private static void runAction(Control owner, JiraNamedEntity action, JiraIssueListModel model,
                                      JiraIssue issue, List <JiraField> fields, StatusLabel status, Action onFinish)
        {
            JiraIssue issueWithTime = SmartJiraServerFacade.Instance.getIssue(issue.Server, issue.Key);

            issueWithTime.SecurityLevel = SmartJiraServerFacade.Instance.getSecurityLevel(issue);
            object           rawIssueObject   = SmartJiraServerFacade.Instance.getRawIssueObject(issue);
            List <JiraField> fieldsWithValues = JiraActionFieldType.fillFieldValues(issue, rawIssueObject, fields);

            // PLVS-133 - this should never happen but does?
            if (model == null)
            {
                owner.Invoke(new MethodInvoker(()
                                               =>
                                               PlvsUtils.showError("Issue List Model was null, please report this as a bug",
                                                                   new Exception("IssueActionRunner.runAction()"))));
                model = JiraIssueListModelImpl.Instance;
            }

            if (fieldsWithValues == null || fieldsWithValues.Count == 0)
            {
                runActionWithoutFields(owner, action, model, issue, status, onFinish);
            }
            else
            {
                owner.Invoke(new MethodInvoker(() =>
                                               new IssueWorkflowAction(issue, action, model, fieldsWithValues, status, onFinish).initAndShowDialog()));
            }
        }
 public void reinit(JiraIssueListModel m)
 {
     model = m;
     shutdown();
     model.IssueChanged += model_IssueChanged;
     model.ModelChanged += model_ModelChanged;
 }
        public FieldEditor(string title, JiraIssueListModel model, AbstractJiraServerFacade facade, JiraIssue issue, string fieldId, Point location)
        {
            PlvsLogger.log("FieldEditor - ctor");

            this.model   = model;
            this.facade  = facade;
            this.issue   = issue;
            this.fieldId = fieldId;

            InitializeComponent();

            buttonOk.Enabled     = false;
            buttonCancel.Enabled = false;

            StartPosition = FormStartPosition.Manual;
            Location      = location;

            Text = title;

            field = new JiraField(fieldId, null);

            Thread t = PlvsUtils.createThread(fillFieldWrap);

            t.Start();
        }
        public IssueWorkflowAction(
            JiraIssue issue, JiraNamedEntity action, JiraIssueListModel model,
            List <JiraField> fields, StatusLabel status, Action onFinish)
        {
            this.issue  = issue;
            this.action = action;
            this.model  = model;
            this.fields = JiraActionFieldType.sortFieldList(fields);

            this.status   = status;
            this.onFinish = onFinish;

            InitializeComponent();

            Text = issue.Key + ": " + action.Name;

            ClientSize = new Size(INITIAL_WIDTH, INITIAL_HEIGHT + buttonOk.Height + 3 * MARGIN);

            buttonOk.Enabled = false;

            StartPosition = FormStartPosition.CenterParent;

            panelThrobber.Visible = true;
            panelContent.Visible  = false;
        }
 protected AbstractNavigableTreeNodeWithServer(JiraIssueListModel model, AbstractJiraServerFacade facade, JiraServer server, string name, int imageIdx)
     : base(name, imageIdx)
 {
     Model  = model;
     Facade = facade;
     Server = server;
 }
        public void updateModelWithSavedFilter(JiraIssueListModel model, JiraServer server, JiraSavedFilter filter)
        {
            List <JiraIssue> issues = facade.getSavedFilterIssues(server, filter, model.Issues.Count, GlobalSettings.JiraIssuesBatch);

            lock (this) {
                model.addIssues(issues);
            }
        }
        public void rebuildModelWithSavedFilter(JiraIssueListModel model, JiraServer server, JiraSavedFilter filter)
        {
            List <JiraIssue> issues = facade.getSavedFilterIssues(server, filter, 0, GlobalSettings.JiraIssuesBatch);

            lock (this) {
                model.clear(false);
                model.addIssues(issues);
            }
        }
Esempio n. 8
0
 public static void showDropZoneFor(JiraIssueListModel model, JiraServer server, AbstractJiraServerFacade facade, DropZoneWorker worker)
 {
     if (activeDropZones.ContainsKey(worker.ZoneKey))
     {
         activeDropZones[worker.ZoneKey].BringToFront();
     }
     else
     {
         new DropZone(model, server, facade, worker).Show();
     }
 }
Esempio n. 9
0
 public static void showJiraServerExplorerFor(JiraIssueListModel model, JiraServer server, AbstractJiraServerFacade facade)
 {
     if (activeExplorers.ContainsKey(server.GUID.ToString()))
     {
         activeExplorers[server.GUID.ToString()].BringToFront();
     }
     else
     {
         new JiraServerExplorer(model, server, facade).Show();
     }
 }
Esempio n. 10
0
        public SearchIssue(JiraServer server, JiraIssueListModel model, StatusLabel status)
        {
            Server = server;
            Model  = model;
            Status = status;
            InitializeComponent();

            Text = "Search issue on server \"" + server.Name + "\"";

            buttonOk.Enabled = false;
            StartPosition    = FormStartPosition.CenterParent;
        }
Esempio n. 11
0
        public IssueContextMenu(JiraIssueListModel model, StatusLabel status, TreeViewAdv tree, ToolStripMenuItem[] items)
        {
            this.model  = model;
            this.status = status;
            this.tree   = tree;
            this.items  = items;

            Items.Add("dummy");

            Opened  += issueContextMenuOpened;
            Opening += issueContextMenuOpening;
        }
Esempio n. 12
0
        public IssueDetailsPanel(JiraIssueListModel model, Solution solution, JiraIssue issue, TabControl tabWindow, TabPage myTab)
        {
            this.model    = model;
            this.solution = solution;
            InitializeComponent();

            status = new StatusLabel(statusStrip, jiraStatus);

            this.issue = issue;

            this.tabWindow = tabWindow;
            this.myTab     = myTab;
        }
Esempio n. 13
0
        public static void runAction(Control owner, JiraNamedEntity action, JiraIssueListModel model, JiraIssue issue, StatusLabel status, Action onFinish)
        {
            Thread runner = PlvsUtils.createThread(delegate {
                try {
                    status.setInfo("Retrieving fields for action \"" + action.Name + "\"...");
                    List <JiraField> fields = SmartJiraServerFacade.Instance.getFieldsForAction(issue, action.Id);
                    runAction(owner, action, model, issue, fields, status, onFinish);
                } catch (Exception e) {
                    status.setError("Failed to run action " + action.Name + " on issue " + issue.Key, e);
                }
            });

            runner.Start();
        }
        public UsersNode(JiraIssueListModel model, AbstractJiraServerFacade facade, JiraServer server)
            : base(model, facade, server, "Users", 0)
        {
            ContextMenuStrip = new ContextMenuStrip();

            menuItems.Add(new ToolStripMenuItem("Add new user...", null, addUser));

            ContextMenuStrip.Items.Add("dummy");

            ContextMenuStrip.Items.AddRange(MenuItems.ToArray());

            ContextMenuStrip.Opening += contextMenuStripOpening;
            ContextMenuStrip.Opened  += contextMenuStripOpened;
        }
Esempio n. 15
0
        private DropZone(JiraIssueListModel model, JiraServer server, AbstractJiraServerFacade facade, DropZoneWorker worker)
        {
            this.model  = model;
            this.server = server;
            this.facade = facade;
            this.worker = worker;

            InitializeComponent();

            StartPosition = FormStartPosition.CenterParent;

            Text = worker.ZoneName;

            updateModelAndResetToInitialState(null, false);
        }
Esempio n. 16
0
        private static void runActionWithoutFields(
            Control owner, JiraNamedEntity action, JiraIssueListModel model,
            JiraIssue issue, StatusLabel status, Action onFinish)
        {
            status.setInfo("Running action \"" + action.Name + "\" on issue " + issue.Key + "...");
            SmartJiraServerFacade.Instance.runIssueActionWithoutParams(issue, action);
            status.setInfo("Action \"" + action.Name + "\" successfully run on issue " + issue.Key);
            var newIssue = SmartJiraServerFacade.Instance.getIssue(issue.Server, issue.Key);

            UsageCollector.Instance.bumpJiraIssuesOpen();
            owner.Invoke(new MethodInvoker(() => { model.updateIssue(newIssue); if (onFinish != null)
                                                   {
                                                       onFinish();
                                                   }
                                           }));
        }
        public void rebuildModelWithRecentlyViewedIssues(JiraIssueListModel model)
        {
            ICollection <RecentlyViewedIssue> issues  = RecentlyViewedIssuesModel.Instance.Issues;
            ICollection <JiraServer>          servers = JiraServerModel.Instance.getAllEnabledServers();

            List <JiraIssue> list = new List <JiraIssue>(issues.Count);

            list.AddRange(from issue in issues
                          let server = findServer(issue.ServerGuid, servers)
                                       where server != null
                                       select facade.getIssue(server, issue.IssueKey));

            lock (this) {
                model.clear(false);
                model.addIssues(list);
            }
        }
        public ComponentNode(JiraIssueListModel model, AbstractJiraServerFacade facade, JiraServer server, JiraProject project, JiraNamedEntity comp)
            : base(model, facade, server, comp.Name, 0)
        {
            this.project = project;
            this.comp    = comp;

            ContextMenuStrip = new ContextMenuStrip();

            menuItems.Add(new ToolStripMenuItem("Open \"Set Component to " + comp.Name + "\" Drop Zone", null, createDropZone));

            ContextMenuStrip.Items.Add("dummy");

            ContextMenuStrip.Items.AddRange(MenuItems.ToArray());

            ContextMenuStrip.Opening += contextMenuStripOpening;
            ContextMenuStrip.Opened  += contextMenuStripOpened;
        }
        public void updateModelWithSprint(JiraIssueListModel model, JiraServer server, Sprint sprint)
        {
            var keys = facade.getIssueKeysForSprint(server, sprint);

            if (keys == null || keys.Count == 0)
            {
                return;
            }

            JiraFilter f = new JqlFilter(keys);

            var issues = facade.getCustomFilterIssues(server, f, model.Issues.Count, GlobalSettings.JiraIssuesBatch);

            lock (this) {
                model.addIssues(issues);
            }
        }
Esempio n. 20
0
        public VersionNode(JiraIssueListModel model, AbstractJiraServerFacade facade, JiraServer server, JiraProject project, JiraNamedEntity version)
            : base(model, facade, server, version.Name, 0)
        {
            this.project = project;
            this.version = version;

            ContextMenuStrip = new ContextMenuStrip();

            menuItems.Add(new ToolStripMenuItem("Open \"Set Fix For " + version.Name + "\" Drop Zone", null, createFixForDropZone));
            menuItems.Add(new ToolStripMenuItem("Open \"Set Affects " + version.Name + "\" Drop Zone", null, createAffectsDropZone));

            ContextMenuStrip.Items.Add("dummy");

            ContextMenuStrip.Items.AddRange(MenuItems.ToArray());

            ContextMenuStrip.Opening += contextMenuStripOpening;
            ContextMenuStrip.Opened  += contextMenuStripOpened;
        }
Esempio n. 21
0
        public UserNode(JiraIssueListModel model, AbstractJiraServerFacade facade, JiraServer server, JiraUser user)
            : base(model, facade, server, user.ToString(), 0)
        {
            this.user = user;

            ContextMenuStrip = new ContextMenuStrip();

            worker = new AssigneeDropZoneWorker(Facade, Server, user);

            menuItems.Add(new ToolStripMenuItem("Open \"Assign to " + user + "\" Drop Zone", null, createDropZone));

            ContextMenuStrip.Items.Add("dummy");

            ContextMenuStrip.Items.AddRange(MenuItems.ToArray());

            ContextMenuStrip.Opening += contextMenuStripOpening;
            ContextMenuStrip.Opened  += contextMenuStripOpened;
        }
        public PriorityNode(JiraIssueListModel model, AbstractJiraServerFacade facade, JiraServer server, JiraNamedEntity priority)
            : base(model, facade, server, priority.Name, 0)
        {
            this.priority = priority;

            ContextMenuStrip = new ContextMenuStrip();

            menuItems.Add(new ToolStripMenuItem(
                              "Open \"Set Priority to " + priority.Name + "\" Drop Zone",
                              ImageCache.Instance.getImage(server, priority.IconUrl).Img, createDropZone));

            ContextMenuStrip.Items.Add("dummy");

            ContextMenuStrip.Items.AddRange(MenuItems.ToArray());

            ContextMenuStrip.Opening += contextMenuStripOpening;
            ContextMenuStrip.Opened  += contextMenuStripOpened;
        }
        public void rebuildModelWithSprint(JiraIssueListModel model, JiraServer server, Sprint sprint)
        {
            var keys = facade.getIssueKeysForSprint(server, sprint);

            if (keys == null || keys.Count == 0)
            {
                lock (this) {
                    model.clear(true);
                    return;
                }
            }
            JiraFilter f = new JqlFilter(keys);

            var issues = facade.getCustomFilterIssues(server, f, 0, GlobalSettings.JiraIssuesBatch);

            lock (this) {
                model.clear(false);
                model.addIssues(issues);
            }
        }
Esempio n. 24
0
        private JiraServerExplorer(JiraIssueListModel model, JiraServer server, AbstractJiraServerFacade facade)
        {
            this.model  = model;
            this.server = server;
            this.facade = facade;

            InitializeComponent();

            status = new StatusLabel(statusStrip, labelPath);

            Text = "JIRA Server Explorer: " + server.Name + " (" + server.Url + ")";

            StartPosition = FormStartPosition.CenterParent;

            dropDownActions.Enabled = false;

            dropDownActions.DropDownItems.Add("phony");

            webJira.Title       = "";
            webJira.ErrorString = Resources.explorer_navigator_error_html;
        }
        public LogWork(
            Control parent, JiraIssueListModel model, AbstractJiraServerFacade facade, JiraIssue issue,
            StatusLabel status, JiraActiveIssueManager activeIssueManager)
        {
            this.parent             = parent;
            this.model              = model;
            this.facade             = facade;
            this.issue              = issue;
            this.status             = status;
            this.activeIssueManager = activeIssueManager;
            InitializeComponent();

            endTime = DateTime.Now;

            setEndTimeLabelText();

            textRemainingEstimate.Enabled = false;
            radioAutoUpdate.Checked       = true;
            textExplanation.Font          = new Font(textExplanation.Font.FontFamily, textExplanation.Font.Size - 1);

            StartPosition = FormStartPosition.CenterParent;
        }
Esempio n. 26
0
 public ComponentsNode(Control parent, JiraIssueListModel model, AbstractJiraServerFacade facade, JiraServer server, JiraProject project)
     : base(model, facade, server, "Components", 0)
 {
     this.parent  = parent;
     this.project = project;
 }
Esempio n. 27
0
        public DeactivateIssue(
            string explanationText, Control parent, JiraIssueListModel model, AbstractJiraServerFacade facade, ParameterStore store,
            JiraIssue issue, StatusLabel status, JiraActiveIssueManager activeIssueManager,
            IEnumerable <JiraNamedEntity> actions, Action onFinished)
            : base(parent, model, facade, issue, status, activeIssueManager)
        {
            this.store      = store;
            this.onFinished = onFinished;

            setOkButtonName("Stop Work");

            SuspendLayout();

            Controls.Remove(LogWorkPanel);

            int explanationY = 0;

            if (explanationText != null)
            {
                Label l = new Label
                {
                    Text      = explanationText,
                    Location  = new Point(10, 10),
                    AutoSize  = false,
                    Width     = LogWorkPanel.Width,
                    Height    = 40,
                    TextAlign = ContentAlignment.MiddleCenter
                };
                Controls.Add(l);
                explanationY = 50;
            }
            checkBoxLogWork = new CheckBox {
                AutoSize = true, Text = "Log Work", Location = new Point(10, 10 + explanationY)
            };
            checkBoxLogWork.CheckedChanged += (s, e) => {
                LogWorkPanel.Enabled = checkBoxLogWork.Checked;
                updateOkButtonState();
            };
            GroupBox group = new GroupBox {
                Size     = new Size(LogWorkPanel.Width + 20, LogWorkPanel.Height + 20),
                Location = new Point(10, checkBoxLogWork.Location.Y + checkBoxLogWork.Height - 3)
            };

            group.Controls.Add(LogWorkPanel);

            LogWorkPanel.Location = new Point(5, 15);
            LogWorkPanel.Enabled  = checkBoxLogWork.Checked;

            checkBoxRunAction = new CheckBox {
                AutoSize = true,
                Text     = "Run Issue Action",
                Location = new Point(10, group.Location.Y + group.Height + 20)
            };
            cbActions = new ComboBox {
                DropDownStyle = ComboBoxStyle.DropDownList,
                Location      = new Point(150, group.Location.Y + group.Height + 17)
            };
            checkBoxRunAction.CheckedChanged += (s, e) => {
                cbActions.Enabled = checkBoxRunAction.Checked;
                updateOkButtonState();
            };

            foreach (var action in actions)
            {
                cbActions.Items.Add(action);
            }
            cbActions.SelectedValueChanged += (s, e) => updateOkButtonState();
            cbActions.Enabled = checkBoxRunAction.Checked;

            Size = new Size(Size.Width + 40, Size.Height + 100 + explanationY);

            Controls.Add(checkBoxLogWork);
            Controls.Add(group);
            Controls.Add(checkBoxRunAction);
            Controls.Add(cbActions);

            ButtonOk.Location     = new Point(ButtonOk.Location.X + 40, ButtonOk.Location.Y + 100 + explanationY);
            ButtonCancel.Location = new Point(ButtonCancel.Location.X + 40, ButtonCancel.Location.Y + 100 + explanationY);
            ResumeLayout(true);

            checkBoxLogWork.Checked   = store.loadParameter(DEACTIVATE_ISSUE_LOG_WORK_CHECKED, 0) > 0;
            checkBoxRunAction.Checked = store.loadParameter(DEACTIVATE_ISSUE_RUN_ACTION_CHECKED, 0) > 0;
            int actionId = store.loadParameter(DEACTIVATE_ISSUE_LAST_ACTION, 0);

            foreach (var item in
                     from object item in cbActions.Items
                     let i = item as JiraNamedEntity
                             where i != null && i.Id == actionId
                             select item)
            {
                cbActions.SelectedItem = item;
                break;
            }
        }
Esempio n. 28
0
 public GroupedByPriorityIssueTreeModel(JiraIssueListModel model, ToolStripButton groupSubtasksButton)
     : base(model, groupSubtasksButton)
 {
 }
 public JiraIssueGroupByComboItem(GroupBy groupBy, JiraIssueListModel model, ToolStripButton groupSubtasksButton)
 {
     this.model = model;
     this.groupSubtasksButton = groupSubtasksButton;
     By = groupBy;
 }
 public ProjectsNode(Control parent, JiraIssueListModel model, AbstractJiraServerFacade facade, JiraServer server)
     : base(model, facade, server, "Projects", 0)
 {
     this.parent = parent;
 }