View Javadoc

1   package com.atlassian.theplugin.idea.crucible.comments;
2   
3   import com.intellij.util.ui.UIUtil;
4   import com.intellij.util.ui.ListTableModel;
5   import com.atlassian.theplugin.idea.ui.TableItemSelectedListener;
6   import com.atlassian.theplugin.idea.ui.AtlassianTableViewWithToolbar;
7   import com.atlassian.theplugin.idea.ui.TableColumnProvider;
8   import com.atlassian.theplugin.idea.ProgressAnimationProvider;
9   
10  import javax.swing.*;
11  import java.awt.*;
12  
13  /**
14   * Created by IntelliJ IDEA.
15   * User: lguminski
16   * Date: Jun 19, 2008
17   * Time: 7:31:59 AM
18   * To change this template use File | Settings | File Templates.
19   */
20  public abstract class AbstractCommentPanel extends JPanel implements CrucibleReviewActionListener {
21  	private ListTableModel commentTableModel;
22  	private JLayeredPane dataPanelsHolder;
23  	private ProgressAnimationProvider progressAnimation = new ProgressAnimationProvider();
24  
25  	public AtlassianTableViewWithToolbar getCommentsTable() {
26  		return commentsTable;
27  	}
28  
29  	public AtlassianTableViewWithToolbar getCommentReplyTable() {
30  		return replyCommentsTable;
31  	}
32  
33  	private AtlassianTableViewWithToolbar commentsTable;
34  	private AtlassianTableViewWithToolbar replyCommentsTable;
35  	private ListTableModel commentReplyTableModel;
36  
37  	public AbstractCommentPanel() {
38  		super(new BorderLayout());
39  	}
40  
41  	protected void initialize() {
42  		setLayout(new BorderLayout());
43  		setBackground(UIUtil.getTreeTextBackground());
44  		getCommentTableModel().setSortable(true);
45  		commentsTable = createCommentsTable(getCommentTableModel(), getCommentTableColumnProvider(),
46  				getCommentToolbarActionGroup(), getCommentSelectedListener(), getCommentToolbarPlace());
47  
48  		getCommentReplyTableModel().setSortable(true);
49  		replyCommentsTable = createCommentsTable(getCommentReplyTableModel(), getCommentReplyTableColumnProvider(),
50  				getCommentReplyToolbarActionGroup(),
51  				getCommentReplySelectedListener(), getCommentReplyToolbarPlace());
52  
53  		dataPanelsHolder = new JLayeredPane();
54  		dataPanelsHolder.setLayout(new BorderLayout());
55  		dataPanelsHolder.setBackground(UIUtil.getTreeTextBackground());
56  //		dataPanelsHolder.add(replyCommentsTable, BorderLayout.CENTER, JLayeredPane.DEFAULT_LAYER);
57  		dataPanelsHolder.add(commentsTable, BorderLayout.CENTER, JLayeredPane.POPUP_LAYER);
58  		add(dataPanelsHolder, BorderLayout.CENTER);
59  		progressAnimation.configure(this, dataPanelsHolder, BorderLayout.CENTER);
60  	}
61  
62  	protected abstract String getCommentToolbarPlace();
63  
64  	protected abstract String getCommentReplyToolbarPlace();
65  
66  	protected abstract TableColumnProvider getCommentTableColumnProvider();
67  
68  	protected abstract TableColumnProvider getCommentReplyTableColumnProvider();
69  
70  	protected abstract TableItemSelectedListener getCommentReplySelectedListener();
71  
72  	protected abstract TableItemSelectedListener getCommentSelectedListener();
73  
74  	protected abstract String getCommentToolbarActionGroup();
75  
76  	protected abstract String getCommentReplyToolbarActionGroup();
77  
78  	protected ProgressAnimationProvider getProgressAnimation() {
79  		return progressAnimation;
80  	}
81  
82  	protected ListTableModel getCommentTableModel() {
83  		return commentTableModel;
84  	}
85  
86  	protected void setCommentTableModel(ListTableModel commentTableModel) {
87  		this.commentTableModel = commentTableModel;
88  	}
89  
90  	protected void setCommentReplyTableModel(ListTableModel commentReplyTableModel) {
91  		this.commentReplyTableModel = commentReplyTableModel;
92  	}
93  
94  	protected ListTableModel getCommentReplyTableModel() {
95  		return commentReplyTableModel;
96  	}
97  
98  	protected AtlassianTableViewWithToolbar createCommentsTable(ListTableModel listTableModel, TableColumnProvider columnProvider,
99  																String toolbarName, TableItemSelectedListener tableItemSelectedListener,
100 																String toolbarPlace) {
101 		AtlassianTableViewWithToolbar table = new AtlassianTableViewWithToolbar(columnProvider, listTableModel, null,
102 				toolbarPlace,
103 				toolbarName,
104 				"Context menu",
105 				"ThePlugin.Crucible.ReviewPopupMenu"
106 		);
107 		table.setBorder(BorderFactory.createEmptyBorder());
108 		table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
109 		table.getColumnModel().setColumnMargin(0);
110 
111 		table.setMinRowHeight(20);
112 		table.getTable().addItemSelectedListener(tableItemSelectedListener);
113 		return table;
114 	}
115 
116 	public void switchToComments() {
117 		dataPanelsHolder.removeAll();
118 		dataPanelsHolder.add(commentsTable, BorderLayout.CENTER);
119 	}
120 
121 	protected void switchToCommentReplies() {
122 		dataPanelsHolder.removeAll();
123 		dataPanelsHolder.add(replyCommentsTable, BorderLayout.CENTER);
124 	}
125 
126 
127 }