Skip to content

Commit ed5b1f6

Browse files
committed
Fix the comments area in the GitHubIssuePanel
- Add CollapsibleSectionPanel - Word wrapping
1 parent 6b1e223 commit ed5b1f6

3 files changed

Lines changed: 77 additions & 22 deletions

File tree

src/main/java/com/junichi11/netbeans/modules/github/issues/issue/ui/GitHubIssuePanel.form

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,29 @@
11
<?xml version="1.0" encoding="UTF-8" ?>
22

33
<Form version="1.4" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
4+
<NonVisualComponents>
5+
<Container class="javax.swing.JPanel" name="mainCommentsPanel">
6+
7+
<Layout>
8+
<DimensionLayout dim="0">
9+
<Group type="103" groupAlignment="0" attributes="0">
10+
<Component id="dummyCommentsPanel" alignment="0" pref="791" max="32767" attributes="0"/>
11+
</Group>
12+
</DimensionLayout>
13+
<DimensionLayout dim="1">
14+
<Group type="103" groupAlignment="0" attributes="0">
15+
<Component id="dummyCommentsPanel" alignment="0" pref="13" max="32767" attributes="0"/>
16+
</Group>
17+
</DimensionLayout>
18+
</Layout>
19+
<SubComponents>
20+
<Container class="javax.swing.JPanel" name="dummyCommentsPanel">
21+
22+
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
23+
</Container>
24+
</SubComponents>
25+
</Container>
26+
</NonVisualComponents>
427
<AuxValues>
528
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
629
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
@@ -241,6 +264,7 @@
241264
<Layout>
242265
<DimensionLayout dim="0">
243266
<Group type="103" groupAlignment="0" attributes="0">
267+
<Component id="attributesViewPanel" alignment="0" max="32767" attributes="0"/>
244268
<Group type="102" attributes="0">
245269
<EmptySpace max="-2" attributes="0"/>
246270
<Group type="103" groupAlignment="0" attributes="0">
@@ -251,7 +275,7 @@
251275
</Group>
252276
<EmptySpace min="-2" pref="37" max="-2" attributes="0"/>
253277
<Group type="103" groupAlignment="0" attributes="0">
254-
<Component id="descriptionTabbedPanel" pref="512" max="32767" attributes="0"/>
278+
<Component id="descriptionTabbedPanel" pref="412" max="32767" attributes="0"/>
255279
<Component id="titleTextField" max="32767" attributes="0"/>
256280
</Group>
257281
<EmptySpace max="-2" attributes="0"/>
@@ -284,11 +308,10 @@
284308
<EmptySpace max="-2" attributes="0"/>
285309
<Component id="newCommentButton" min="-2" max="-2" attributes="0"/>
286310
</Group>
311+
<Component id="commentsCollapsibleSectionPanel" alignment="0" max="32767" attributes="0"/>
287312
</Group>
288313
<EmptySpace max="-2" attributes="0"/>
289314
</Group>
290-
<Component id="attributesViewPanel" alignment="0" max="32767" attributes="0"/>
291-
<Component id="mainCommetnsPanel" alignment="0" max="32767" attributes="0"/>
292315
</Group>
293316
</DimensionLayout>
294317
<DimensionLayout dim="1">
@@ -323,8 +346,8 @@
323346
</Group>
324347
<EmptySpace max="-2" attributes="0"/>
325348
<Component id="attributesViewPanel" min="-2" max="-2" attributes="0"/>
326-
<EmptySpace max="-2" attributes="0"/>
327-
<Component id="mainCommetnsPanel" min="-2" max="-2" attributes="0"/>
349+
<EmptySpace type="unrelated" max="-2" attributes="0"/>
350+
<Component id="commentsCollapsibleSectionPanel" min="-2" max="-2" attributes="0"/>
328351
<EmptySpace min="-2" max="-2" attributes="0"/>
329352
<Group type="103" groupAlignment="0" attributes="0">
330353
<Component id="newCommentLabel" min="-2" max="-2" attributes="0"/>
@@ -335,7 +358,7 @@
335358
<Component id="newCommentButton" alignment="3" min="-2" max="-2" attributes="0"/>
336359
<Component id="newCommentCloseReopenIssueButton" alignment="3" min="-2" max="-2" attributes="0"/>
337360
</Group>
338-
<EmptySpace max="32767" attributes="0"/>
361+
<EmptySpace pref="69" max="32767" attributes="0"/>
339362
</Group>
340363
</Group>
341364
</DimensionLayout>
@@ -449,10 +472,6 @@
449472
</Component>
450473
<Component class="com.junichi11.netbeans.modules.github.issues.issue.ui.AttributesViewPanel" name="attributesViewPanel">
451474
</Component>
452-
<Container class="javax.swing.JPanel" name="mainCommetnsPanel">
453-
454-
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
455-
</Container>
456475
<Component class="org.netbeans.modules.bugtracking.commons.LinkButton" name="assignYourselfLinkButton">
457476
<Properties>
458477
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
@@ -463,6 +482,16 @@
463482
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="assignYourselfLinkButtonActionPerformed"/>
464483
</Events>
465484
</Component>
485+
<Component class="org.netbeans.modules.bugtracking.commons.CollapsibleSectionPanel" name="commentsCollapsibleSectionPanel">
486+
<Properties>
487+
<Property name="content" type="javax.swing.JComponent" editor="org.netbeans.modules.form.ComponentChooserEditor">
488+
<ComponentRef name="mainCommentsPanel"/>
489+
</Property>
490+
<Property name="label" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
491+
<ResourceString bundle="com/junichi11/netbeans/modules/github/issues/issue/ui/Bundle.properties" key="GitHubIssuePanel.commentsCollapsibleSectionPanel.label" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
492+
</Property>
493+
</Properties>
494+
</Component>
466495
</SubComponents>
467496
</Container>
468497
</SubComponents>

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

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
import java.util.logging.Logger;
6969
import javax.swing.DefaultComboBoxModel;
7070
import javax.swing.DefaultListModel;
71+
import javax.swing.GroupLayout;
7172
import javax.swing.Icon;
7273
import javax.swing.JPanel;
7374
import javax.swing.SwingUtilities;
@@ -145,7 +146,7 @@ private void init() {
145146
headerCreatedByUserLabel.setFont(bold);
146147
headerStatusLabel.setFont(bold);
147148
commentsPanel = new CommentsPanel();
148-
mainCommetnsPanel.add(commentsPanel);
149+
((GroupLayout) mainCommentsPanel.getLayout()).replace(dummyCommentsPanel, commentsPanel);
149150
}
150151

151152
public void setIssue(GitHubIssue gitHubIssue) {
@@ -163,6 +164,10 @@ private GitHubRepository getRepository() {
163164
return gitHubIssue.getRepository();
164165
}
165166

167+
@NbBundle.Messages({
168+
"# {0} - count",
169+
"GitHubIssuePanel.comment.count=Comment({0})"
170+
})
166171
public void update() {
167172
// header
168173
setHeader();
@@ -252,6 +257,8 @@ public void update() {
252257
// add comments
253258
commentsPanel.removeAllComments();
254259
List<Comment> comments = gitHubIssue.getComments();
260+
// set count
261+
commentsCollapsibleSectionPanel.setLabel(Bundle.GitHubIssuePanel_comment_count(comments.size()));
255262
PegDownProcessor processor = GitHubIssues.getInstance().getPegDownProcessor();
256263
for (Comment comment : comments) {
257264
String body = comment.getBody();
@@ -554,6 +561,8 @@ private void fireChange() {
554561
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
555562
private void initComponents() {
556563

564+
mainCommentsPanel = new javax.swing.JPanel();
565+
dummyCommentsPanel = new javax.swing.JPanel();
557566
headerPanel = new javax.swing.JPanel();
558567
headerSubmitButton = new javax.swing.JButton();
559568
headerNameLabel = new javax.swing.JLabel();
@@ -588,8 +597,21 @@ private void initComponents() {
588597
newCommentButton = new javax.swing.JButton();
589598
newCommentCloseReopenIssueButton = new javax.swing.JButton();
590599
attributesViewPanel = new com.junichi11.netbeans.modules.github.issues.issue.ui.AttributesViewPanel();
591-
mainCommetnsPanel = new javax.swing.JPanel();
592600
assignYourselfLinkButton = new org.netbeans.modules.bugtracking.commons.LinkButton();
601+
commentsCollapsibleSectionPanel = new org.netbeans.modules.bugtracking.commons.CollapsibleSectionPanel();
602+
603+
dummyCommentsPanel.setLayout(new java.awt.BorderLayout());
604+
605+
javax.swing.GroupLayout mainCommentsPanelLayout = new javax.swing.GroupLayout(mainCommentsPanel);
606+
mainCommentsPanel.setLayout(mainCommentsPanelLayout);
607+
mainCommentsPanelLayout.setHorizontalGroup(
608+
mainCommentsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
609+
.addComponent(dummyCommentsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 791, Short.MAX_VALUE)
610+
);
611+
mainCommentsPanelLayout.setVerticalGroup(
612+
mainCommentsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
613+
.addComponent(dummyCommentsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 13, Short.MAX_VALUE)
614+
);
593615

594616
org.openide.awt.Mnemonics.setLocalizedText(headerSubmitButton, org.openide.util.NbBundle.getMessage(GitHubIssuePanel.class, "GitHubIssuePanel.headerSubmitButton.text")); // NOI18N
595617

@@ -730,19 +752,21 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
730752

731753
org.openide.awt.Mnemonics.setLocalizedText(newCommentCloseReopenIssueButton, org.openide.util.NbBundle.getMessage(GitHubIssuePanel.class, "GitHubIssuePanel.newCommentCloseReopenIssueButton.text")); // NOI18N
732754

733-
mainCommetnsPanel.setLayout(new java.awt.BorderLayout());
734-
735755
org.openide.awt.Mnemonics.setLocalizedText(assignYourselfLinkButton, org.openide.util.NbBundle.getMessage(GitHubIssuePanel.class, "GitHubIssuePanel.assignYourselfLinkButton.text")); // NOI18N
736756
assignYourselfLinkButton.addActionListener(new java.awt.event.ActionListener() {
737757
public void actionPerformed(java.awt.event.ActionEvent evt) {
738758
assignYourselfLinkButtonActionPerformed(evt);
739759
}
740760
});
741761

762+
commentsCollapsibleSectionPanel.setContent(mainCommentsPanel);
763+
commentsCollapsibleSectionPanel.setLabel(org.openide.util.NbBundle.getMessage(GitHubIssuePanel.class, "GitHubIssuePanel.commentsCollapsibleSectionPanel.label")); // NOI18N
764+
742765
javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
743766
mainPanel.setLayout(mainPanelLayout);
744767
mainPanelLayout.setHorizontalGroup(
745768
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
769+
.addComponent(attributesViewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
746770
.addGroup(mainPanelLayout.createSequentialGroup()
747771
.addContainerGap()
748772
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -752,7 +776,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
752776
.addComponent(titleLabel))
753777
.addGap(37, 37, 37)
754778
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
755-
.addComponent(descriptionTabbedPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 512, Short.MAX_VALUE)
779+
.addComponent(descriptionTabbedPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 412, Short.MAX_VALUE)
756780
.addComponent(titleTextField))
757781
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
758782
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
@@ -776,10 +800,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
776800
.addGap(0, 0, Short.MAX_VALUE)
777801
.addComponent(newCommentCloseReopenIssueButton)
778802
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
779-
.addComponent(newCommentButton)))
803+
.addComponent(newCommentButton))
804+
.addComponent(commentsCollapsibleSectionPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
780805
.addContainerGap())
781-
.addComponent(attributesViewPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
782-
.addComponent(mainCommetnsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
783806
);
784807
mainPanelLayout.setVerticalGroup(
785808
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -808,8 +831,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
808831
.addComponent(descriptionTabbedPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
809832
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
810833
.addComponent(attributesViewPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
811-
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
812-
.addComponent(mainCommetnsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
834+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
835+
.addComponent(commentsCollapsibleSectionPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
813836
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
814837
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
815838
.addComponent(newCommentLabel)
@@ -818,7 +841,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
818841
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
819842
.addComponent(newCommentButton)
820843
.addComponent(newCommentCloseReopenIssueButton))
821-
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
844+
.addContainerGap(69, Short.MAX_VALUE))
822845
);
823846

824847
mainScrollPane.setViewportView(mainPanel);
@@ -943,8 +966,10 @@ private void assignYourselfLinkButtonActionPerformed(java.awt.event.ActionEvent
943966
private javax.swing.JComboBox<User> assigneeComboBox;
944967
private javax.swing.JLabel assigneeLabel;
945968
private com.junichi11.netbeans.modules.github.issues.issue.ui.AttributesViewPanel attributesViewPanel;
969+
private org.netbeans.modules.bugtracking.commons.CollapsibleSectionPanel commentsCollapsibleSectionPanel;
946970
private javax.swing.JLabel descriptionLabel;
947971
private com.junichi11.netbeans.modules.github.issues.issue.ui.CommentTabbedPanel descriptionTabbedPanel;
972+
private javax.swing.JPanel dummyCommentsPanel;
948973
private javax.swing.JLabel headerCreatedByLabel;
949974
private javax.swing.JLabel headerCreatedByUserLabel;
950975
private javax.swing.JLabel headerCreatedDateLabel;
@@ -961,7 +986,7 @@ private void assignYourselfLinkButtonActionPerformed(java.awt.event.ActionEvent
961986
private javax.swing.JLabel labelsLabel;
962987
private javax.swing.JList<Label> labelsList;
963988
private javax.swing.JScrollPane labelsScrollPane;
964-
private javax.swing.JPanel mainCommetnsPanel;
989+
private javax.swing.JPanel mainCommentsPanel;
965990
private javax.swing.JPanel mainPanel;
966991
private javax.swing.JScrollPane mainScrollPane;
967992
private javax.swing.JComboBox<Milestone> milestoneComboBox;

src/main/resources/com/junichi11/netbeans/modules/github/issues/issue/ui/Bundle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,4 @@ MilestonePanel.errorLabel.text=ERROR
5050
GitHubIssuePanel.newLabelButton.text=New Label
5151
CommentPanel.previewLinkButton.text=HTML
5252
GitHubIssuePanel.assignYourselfLinkButton.text=Assign yourself
53+
GitHubIssuePanel.commentsCollapsibleSectionPanel.label=Comments

0 commit comments

Comments
 (0)