Eclipseplugins
CherryPickCommitPage.java
1 package com.proalpha.pds.gitutils.cherrypick;
2 
3 import java.net.URL;
4 import java.text.DateFormat;
5 import java.util.Collections;
6 import java.util.List;
7 
8 import org.eclipse.core.runtime.FileLocator;
9 import org.eclipse.core.runtime.Path;
10 import org.eclipse.core.runtime.Platform;
11 import org.eclipse.jface.resource.ImageDescriptor;
12 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
13 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
14 import org.eclipse.jface.viewers.ITreeContentProvider;
15 import org.eclipse.jface.viewers.LabelProvider;
16 import org.eclipse.jface.viewers.StyledString;
17 import org.eclipse.jface.viewers.TreeViewer;
18 import org.eclipse.jface.viewers.TreeViewerColumn;
19 import org.eclipse.jface.viewers.Viewer;
20 import org.eclipse.jface.wizard.WizardPage;
21 import org.eclipse.jgit.revwalk.RevCommit;
22 import org.eclipse.swt.SWT;
23 import org.eclipse.swt.widgets.Composite;
24 import org.eclipse.swt.widgets.Tree;
25 import org.eclipse.swt.widgets.TreeColumn;
26 
27 import com.proalpha.pds.gitutils.Activator;
28 
29 public class CherryPickCommitPage extends WizardPage {
30 
31  List<RevCommit> commitsfound;
32  TreeViewer treeViewer;
33 
38  super(CherryPickCommitPage.class.getName());
39  setTitle("proALPHA CherryPick");
40  setMessage("The following commits get picked into your Repository", INFORMATION);
41  URL url = FileLocator.find(Platform.getBundle(Activator.PLUGIN_ID), new Path("icons/pA-logox72.png"),
42  Collections.emptyMap());
43 
44  setImageDescriptor(ImageDescriptor.createFromURL(url));
45  setDescription("Wizard Page description");
46 
47  }
48 
49  public void setCommitsfound(List<RevCommit> commitsfound) {
50  this.commitsfound = commitsfound;
51  treeViewer.setInput(commitsfound);
52  treeViewer.refresh();
53  }
54 
60  public void createControl(Composite parent) {
61  Composite container = new Composite(parent, SWT.NONE);
62 
63  setControl(container);
64 
65  treeViewer = new TreeViewer(container, SWT.BORDER);
66  Tree tree = treeViewer.getTree();
67  tree.setBounds(0, 0, 574, 334);
68  tree.setHeaderVisible(true);
69 
70  TreeViewerColumn treeViewerColumn_2 = new TreeViewerColumn(treeViewer, SWT.NONE);
71  TreeColumn trclmnNewColumn_2 = treeViewerColumn_2.getColumn();
72  trclmnNewColumn_2.setWidth(80);
73  trclmnNewColumn_2.setText("CommitID");
74  trclmnNewColumn_2.setAlignment(SWT.LEFT);
75  treeViewerColumn_2.setLabelProvider(new DelegatingStyledCellLabelProvider(new NameLabelProvider()));
76 
77  TreeViewerColumn treeViewerColumn_1 = new TreeViewerColumn(treeViewer, SWT.NONE);
78  TreeColumn trclmnNewColumn_1 = treeViewerColumn_1.getColumn();
79  trclmnNewColumn_1.setWidth(300);
80  trclmnNewColumn_1.setText("Message");
81  trclmnNewColumn_1.setAlignment(SWT.LEFT);
82  treeViewerColumn_1.setLabelProvider(new DelegatingStyledCellLabelProvider(new MessageLabelProvider()));
83 
84  TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
85  TreeColumn trclmnNewColumn = treeViewerColumn.getColumn();
86  trclmnNewColumn.setWidth(100);
87  trclmnNewColumn.setText("Author");
88  trclmnNewColumn.setAlignment(SWT.LEFT);
89  treeViewerColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(new AuthorLabelProvider()));
90 
91  TreeViewerColumn dateColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
92  TreeColumn trclmnDateColumn = dateColumn.getColumn();
93  trclmnDateColumn.setWidth(70);
94  trclmnDateColumn.setText("Date");
95  trclmnDateColumn.setAlignment(SWT.LEFT);
96  dateColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(new DateLabelProvider()));
97 
98  treeViewer.setContentProvider(new CommitProvider());
99  treeViewer.setInput(commitsfound);
100 
101  treeViewer.getTree().setHeaderVisible(true);
102  treeViewer.getTree().setLinesVisible(true);
103  setPageComplete(true);
104  }
105 
106  public class CommitProvider implements ITreeContentProvider {
107 
108  public void inputChanged(Viewer v, Object oldInput, Object newInput) {
109  }
110 
111  @Override
112  public void dispose() {
113  }
114 
115  @Override
116  public Object[] getElements(Object inputElement) {
117  if (inputElement instanceof List) {
118  return ((List<?>) inputElement).toArray();
119  }
120  return new Object[0];
121  }
122 
123  @Override
124  public Object[] getChildren(Object parentElement) {
125  return null;
126  }
127 
128  @Override
129  public Object getParent(Object element) {
130  return null;
131  }
132 
133  @Override
134  public boolean hasChildren(Object element) {
135  return false;
136  }
137 
138  }
139 
140  class NameLabelProvider extends LabelProvider implements IStyledLabelProvider {
141 
142  @Override
143  public StyledString getStyledText(Object element) {
144  if (element instanceof RevCommit) {
145  RevCommit commit = (RevCommit) element;
146  return new StyledString(commit.getName().substring(0, 8));
147  }
148  return null;
149  }
150 
151  }
152 
153  class MessageLabelProvider extends LabelProvider implements IStyledLabelProvider {
154 
155  @Override
156  public StyledString getStyledText(Object element) {
157  if (element instanceof RevCommit) {
158  RevCommit commit = (RevCommit) element;
159  return new StyledString(commit.getFullMessage().replace("\n", " "));
160  }
161  return null;
162  }
163 
164  }
165 
166  class AuthorLabelProvider extends LabelProvider implements IStyledLabelProvider {
167 
168  @Override
169  public StyledString getStyledText(Object element) {
170  if (element instanceof RevCommit) {
171  RevCommit commit = (RevCommit) element;
172  return new StyledString(commit.getAuthorIdent().getName());
173  }
174  return null;
175  }
176 
177  }
178 
179  class DateLabelProvider extends LabelProvider implements IStyledLabelProvider {
180 
181  private DateFormat dateLabelFormat;
182 
183  public DateLabelProvider() {
184  dateLabelFormat = DateFormat.getDateInstance();
185  }
186 
187  @Override
188  public StyledString getStyledText(Object element) {
189  if (element instanceof RevCommit) {
190  RevCommit commit = (RevCommit) element;
191  return new StyledString(dateLabelFormat.format(commit.getCommitterIdent().getWhen()));
192  }
193  return null;
194  }
195 
196  }
197 
198 }