Skip to content

Commit 30d7771

Browse files
committed
Use a due date of a milestone #6
1 parent ca0c6ca commit 30d7771

1 file changed

Lines changed: 77 additions & 31 deletions

File tree

  • src/main/java/com/junichi11/netbeans/modules/github/issues/issue

src/main/java/com/junichi11/netbeans/modules/github/issues/issue/GitHubIssue.java

Lines changed: 77 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,11 @@
4242
package com.junichi11.netbeans.modules.github.issues.issue;
4343

4444
import com.junichi11.netbeans.modules.github.issues.GitHubIssueState;
45-
import com.junichi11.netbeans.modules.github.issues.GitHubIssuesConfig;
4645
import com.junichi11.netbeans.modules.github.issues.repository.GitHubRepository;
46+
import com.junichi11.netbeans.modules.github.issues.utils.UiUtils;
4747
import java.beans.PropertyChangeListener;
4848
import java.beans.PropertyChangeSupport;
4949
import java.io.File;
50-
import java.util.Calendar;
5150
import java.util.Collection;
5251
import java.util.Collections;
5352
import java.util.Date;
@@ -58,6 +57,7 @@
5857
import javax.swing.JTable;
5958
import org.eclipse.egit.github.core.Comment;
6059
import org.eclipse.egit.github.core.Issue;
60+
import org.eclipse.egit.github.core.Milestone;
6161
import org.eclipse.egit.github.core.User;
6262
import org.netbeans.modules.bugtracking.commons.UIUtils;
6363
import org.netbeans.modules.bugtracking.issuetable.ColumnDescriptor;
@@ -190,6 +190,13 @@ public Date getClosed() {
190190
return null;
191191
}
192192

193+
public Milestone getMilestone() {
194+
if (issue != null) {
195+
return issue.getMilestone();
196+
}
197+
return null;
198+
}
199+
193200
public boolean isFinished() {
194201
if (issue == null) {
195202
return false;
@@ -237,8 +244,10 @@ public Issue submitNewIssue(CreateIssueParams params) {
237244
setIssue(newIssue);
238245
// add to cache
239246
repository.addIssue(this);
247+
scheduleInfo = createScheduleInfo();
240248
fireChange();
241249
fireDataChange();
250+
fireScheduleChange();
242251
}
243252
return newIssue;
244253
}
@@ -247,6 +256,10 @@ public Issue editIssue(CreateIssueParams params) {
247256
Issue editIssue = repository.editIssue(this, params);
248257
if (editIssue != null) {
249258
setIssue(editIssue);
259+
scheduleInfo = createScheduleInfo();
260+
fireChange();
261+
fireDataChange();
262+
fireScheduleChange();
250263
} else {
251264
repository.refresh(this);
252265
}
@@ -291,49 +304,82 @@ public List<Comment> getComments() {
291304
}
292305

293306
// schedule
307+
@NbBundle.Messages({
308+
"GitHubIssue.MSG.setSchedule=Set a due date to your milestone"
309+
})
294310
public void setSchedule(IssueScheduleInfo scheduleInfo) {
295-
this.scheduleInfo = scheduleInfo;
296-
if (scheduleInfo == null) {
297-
// remove schedule
298-
GitHubIssuesConfig.getInstance().removeSchedule(repository, this);
299-
} else {
300-
GitHubIssuesConfig.getInstance().setScheduleDueDate(repository, this, scheduleInfo.getDate());
301-
GitHubIssuesConfig.getInstance().setScheduleInterval(repository, this, scheduleInfo.getInterval());
302-
}
303-
fireDataChange();
304-
fireScheduleChange();
311+
UiUtils.showPlainDialog(Bundle.GitHubIssue_MSG_setSchedule());
312+
// remove ?
313+
// this.scheduleInfo = scheduleInfo;
314+
// if (scheduleInfo == null) {
315+
// // remove schedule
316+
// GitHubIssuesConfig.getInstance().removeSchedule(repository, this);
317+
// } else {
318+
// GitHubIssuesConfig.getInstance().setScheduleDueDate(repository, this, scheduleInfo.getDate());
319+
// GitHubIssuesConfig.getInstance().setScheduleInterval(repository, this, scheduleInfo.getInterval());
320+
// }
321+
// fireDataChange();
322+
// fireScheduleChange();
305323
}
306324

307325
public Date getDueDate() {
308-
IssueScheduleInfo info = getSchedule();
309-
if (info == null) {
326+
String status = getStatus();
327+
if (status == null || GitHubIssueState.toEnum(status) == GitHubIssueState.CLOSED) {
310328
return null;
311329
}
312-
Calendar calendar = Calendar.getInstance();
313-
Date date = info.getDate();
314-
int interval = info.getInterval();
315-
if (interval < 1) {
316-
return null;
330+
Milestone milestone = getMilestone();
331+
if (milestone != null) {
332+
return milestone.getDueOn();
317333
}
318-
calendar.setTime(date);
319-
calendar.add(Calendar.DATE, interval);
320-
return calendar.getTime();
334+
return null;
335+
336+
// remove?
337+
// IssueScheduleInfo info = getSchedule();
338+
// if (info == null) {
339+
// return null;
340+
// }
341+
// Calendar calendar = Calendar.getInstance();
342+
// Date date = info.getDate();
343+
// int interval = info.getInterval();
344+
// if (interval < 1) {
345+
// return null;
346+
// }
347+
// calendar.setTime(date);
348+
// calendar.add(Calendar.DATE, interval);
349+
// return calendar.getTime();
321350
}
322351

323352
public IssueScheduleInfo getSchedule() {
353+
String status = getStatus();
354+
if (status == null || GitHubIssueState.toEnum(status) == GitHubIssueState.CLOSED) {
355+
return null;
356+
}
324357
if (scheduleInfo == null) {
325-
GitHubIssuesConfig config = GitHubIssuesConfig.getInstance();
326-
Date dueDate = config.getScheduleDueDate(repository, this);
327-
int interval = config.getScheduleInterval(repository, this);
358+
scheduleInfo = createScheduleInfo();
359+
}
360+
return scheduleInfo;
361+
}
362+
363+
private IssueScheduleInfo createScheduleInfo() {
364+
Milestone milestone = getMilestone();
365+
if (milestone != null) {
366+
Date dueDate = milestone.getDueOn();
328367
if (dueDate != null) {
329-
if (interval > 0) {
330-
scheduleInfo = new IssueScheduleInfo(dueDate, interval);
331-
} else {
332-
scheduleInfo = new IssueScheduleInfo(dueDate);
333-
}
368+
return new IssueScheduleInfo(dueDate, 1);
334369
}
335370
}
336-
return scheduleInfo;
371+
// XXX remove ?
372+
// GitHubIssuesConfig config = GitHubIssuesConfig.getInstance();
373+
// Date dueDate = config.getScheduleDueDate(repository, this);
374+
// int interval = config.getScheduleInterval(repository, this);
375+
// if (dueDate != null) {
376+
// if (interval > 0) {
377+
// return new IssueScheduleInfo(dueDate, interval);
378+
// } else {
379+
// return new IssueScheduleInfo(dueDate);
380+
// }
381+
// }
382+
return null;
337383
}
338384

339385
@NbBundle.Messages({

0 commit comments

Comments
 (0)