5151import com .junichi11 .netbeans .modules .github .issues .egit .SearchIssuesParams .Type ;
5252import com .junichi11 .netbeans .modules .github .issues .query .GitHubQuery ;
5353import com .junichi11 .netbeans .modules .github .issues .query .GitHubQuery .QParam ;
54+ import com .junichi11 .netbeans .modules .github .issues .repository .GitHubRepository ;
5455import java .awt .Font ;
5556import java .awt .event .ActionListener ;
57+ import java .util .List ;
5658import javax .swing .DefaultComboBoxModel ;
59+ import javax .swing .JComboBox ;
5760import javax .swing .JComponent ;
5861import javax .swing .UIManager ;
5962import javax .swing .event .ChangeListener ;
6063import javax .swing .event .DocumentEvent ;
6164import javax .swing .event .DocumentListener ;
65+ import org .eclipse .egit .github .core .Milestone ;
6266import org .openide .util .ChangeSupport ;
6367import org .openide .util .NbBundle ;
6468
@@ -78,12 +82,14 @@ public class GitHubQueryPanel extends javax.swing.JPanel {
7882 private final DefaultComboBoxModel <SearchIssuesParams .No > noComboBoxModel = new DefaultComboBoxModel ();
7983 private final DefaultComboBoxModel <SearchIssuesParams .Sort > sortComboBoxModel = new DefaultComboBoxModel ();
8084 private final DefaultComboBoxModel <SearchIssuesParams .Order > orderComboBoxModel = new DefaultComboBoxModel ();
85+ private final DefaultComboBoxModel <Milestone > milestoneComboBoxModel = new DefaultComboBoxModel ();
8186 private final ChangeSupport changeSupport = new ChangeSupport (this );
8287
8388 /**
8489 * Creates new form GitHubQueryPanel
8590 */
8691 public GitHubQueryPanel (GitHubQuery query , JComponent table ) {
92+ assert query != null ;
8793 this .query = query ;
8894 initComponents ();
8995
@@ -154,6 +160,11 @@ public GitHubQueryPanel(GitHubQuery query, JComponent table) {
154160 orderComboBox .setModel (orderComboBoxModel );
155161 orderComboBox .setRenderer (new GitHubQueryListCellRenderer (orderComboBox .getRenderer ()));
156162
163+ // milestone
164+ GitHubRepository repository = query .getRepository ();
165+ List <Milestone > milestones = repository .getMilestones ();
166+ setComboBox (milestoneComboBox , milestoneComboBoxModel , milestones .toArray ());
167+
157168 // add listener
158169 addDocumentListener ();
159170
@@ -165,6 +176,15 @@ public GitHubQueryPanel(GitHubQuery query, JComponent table) {
165176 update ();
166177 }
167178
179+ private void setComboBox (JComboBox comboBox , DefaultComboBoxModel model , Object [] values ) {
180+ model .addElement (null );
181+ for (Object value : values ) {
182+ model .addElement (value );
183+ }
184+ comboBox .setModel (model );
185+ comboBox .setRenderer (new GitHubQueryListCellRenderer (comboBox .getRenderer ()));
186+ }
187+
168188 private void addDocumentListener () {
169189 DefaultDocumentListener defaultDocumentListener = new DefaultDocumentListener ();
170190 createdTextField .getDocument ().addDocumentListener (defaultDocumentListener );
@@ -201,6 +221,17 @@ public final void update() {
201221 isIssueComboBox .setSelectedItem (Is .valueOfString (query .getParameter (QParam .IS_ISSUE )));
202222 sortComboBox .setSelectedItem (Sort .valueOfString (query .getParameter (GitHubQuery .Param .SORT )));
203223 orderComboBox .setSelectedItem (Order .valueOfString (query .getParameter (GitHubQuery .Param .ORDER )));
224+ // milestone
225+ String milestoneTitle = query .getParameter (QParam .MILESTONE );
226+ for (int i = 0 ; i < milestoneComboBox .getItemCount (); i ++) {
227+ Milestone milestone = milestoneComboBox .getItemAt (i );
228+ if (milestone != null ) {
229+ if (milestone .getTitle ().equals (milestoneTitle )) {
230+ milestoneComboBox .setSelectedIndex (i );
231+ break ;
232+ }
233+ }
234+ }
204235 }
205236
206237 public final void setErrorMessage (String errorMessage ) {
@@ -248,6 +279,10 @@ public String getKeyword() {
248279 return keywordTextField .getText ().trim ();
249280 }
250281
282+ public Milestone getMilestone () {
283+ return (Milestone ) milestoneComboBox .getSelectedItem ();
284+ }
285+
251286 public State getState () {
252287 return (State ) stateComboBox .getSelectedItem ();
253288 }
@@ -380,7 +415,7 @@ private void fireChange() {
380415 private void initComponents () {
381416
382417 stateLabel = new javax .swing .JLabel ();
383- stateComboBox = new javax .swing .JComboBox <State >();
418+ stateComboBox = new javax .swing .JComboBox <>();
384419 keywordLabel = new javax .swing .JLabel ();
385420 keywordTextField = new javax .swing .JTextField ();
386421 searchButton = new javax .swing .JButton ();
@@ -412,21 +447,23 @@ private void initComponents() {
412447 mergedTextField = new javax .swing .JTextField ();
413448 closedTextField = new javax .swing .JTextField ();
414449 sortLabel = new javax .swing .JLabel ();
415- sortComboBox = new javax .swing .JComboBox <Sort >();
450+ sortComboBox = new javax .swing .JComboBox <>();
416451 orderLabel = new javax .swing .JLabel ();
417- orderComboBox = new javax .swing .JComboBox <Order >();
452+ orderComboBox = new javax .swing .JComboBox <>();
418453 headerPanel = new javax .swing .JPanel ();
419454 headerNameLabel = new javax .swing .JLabel ();
420455 headerErrorLabel = new javax .swing .JLabel ();
421456 resetButton = new javax .swing .JButton ();
422457 mainIssueTablePanel = new javax .swing .JPanel ();
423458 resultsLabel = new javax .swing .JLabel ();
424- isOpenComboBox = new javax .swing .JComboBox <Is >();
425- isMergedComboBox = new javax .swing .JComboBox <Is >();
426- isIssueComboBox = new javax .swing .JComboBox <Is >();
427- noComboBox = new javax .swing .JComboBox <No >();
459+ isOpenComboBox = new javax .swing .JComboBox <>();
460+ isMergedComboBox = new javax .swing .JComboBox <>();
461+ isIssueComboBox = new javax .swing .JComboBox <>();
462+ noComboBox = new javax .swing .JComboBox <>();
428463 typeLabel = new javax .swing .JLabel ();
429- typeComboBox = new javax .swing .JComboBox <Type >();
464+ typeComboBox = new javax .swing .JComboBox <>();
465+ milestoneLabel = new javax .swing .JLabel ();
466+ milestoneComboBox = new javax .swing .JComboBox <>();
430467
431468 org .openide .awt .Mnemonics .setLocalizedText (stateLabel , org .openide .util .NbBundle .getMessage (GitHubQueryPanel .class , "GitHubQueryPanel.stateLabel.text" )); // NOI18N
432469
@@ -537,6 +574,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
537574
538575 org .openide .awt .Mnemonics .setLocalizedText (typeLabel , org .openide .util .NbBundle .getMessage (GitHubQueryPanel .class , "GitHubQueryPanel.typeLabel.text" )); // NOI18N
539576
577+ org .openide .awt .Mnemonics .setLocalizedText (milestoneLabel , org .openide .util .NbBundle .getMessage (GitHubQueryPanel .class , "GitHubQueryPanel.milestoneLabel.text" )); // NOI18N
578+
540579 javax .swing .GroupLayout layout = new javax .swing .GroupLayout (this );
541580 this .setLayout (layout );
542581 layout .setHorizontalGroup (
@@ -581,6 +620,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
581620 .addGroup (layout .createSequentialGroup ()
582621 .addComponent (keywordTextField )
583622 .addPreferredGap (javax .swing .LayoutStyle .ComponentPlacement .RELATED )
623+ .addComponent (milestoneLabel )
624+ .addGap (6 , 6 , 6 )
625+ .addComponent (milestoneComboBox , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE )
626+ .addPreferredGap (javax .swing .LayoutStyle .ComponentPlacement .RELATED )
584627 .addComponent (stateLabel )
585628 .addPreferredGap (javax .swing .LayoutStyle .ComponentPlacement .RELATED )
586629 .addComponent (stateComboBox , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE )))
@@ -635,7 +678,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
635678 .addComponent (keywordLabel )
636679 .addComponent (keywordTextField , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE )
637680 .addComponent (stateLabel )
638- .addComponent (stateComboBox , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE ))
681+ .addComponent (stateComboBox , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE )
682+ .addComponent (milestoneLabel )
683+ .addComponent (milestoneComboBox , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE ))
639684 .addPreferredGap (javax .swing .LayoutStyle .ComponentPlacement .RELATED )
640685 .addGroup (layout .createParallelGroup (javax .swing .GroupLayout .Alignment .BASELINE )
641686 .addComponent (authorLabel )
@@ -747,6 +792,8 @@ private void resetButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F
747792 private javax .swing .JTextField mentionsTextField ;
748793 private javax .swing .JLabel mergedLabel ;
749794 private javax .swing .JTextField mergedTextField ;
795+ private javax .swing .JComboBox <Milestone > milestoneComboBox ;
796+ private javax .swing .JLabel milestoneLabel ;
750797 private javax .swing .JComboBox <No > noComboBox ;
751798 private javax .swing .JLabel noLabel ;
752799 private javax .swing .JComboBox <Order > orderComboBox ;
0 commit comments