1 package com.proalpha.pds.gitutils.mylyn;
3 import java.lang.reflect.InvocationTargetException;
5 import java.util.Collections;
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.IStructuredContentProvider;
15 import org.eclipse.jface.viewers.LabelProvider;
16 import org.eclipse.jface.viewers.StyledString;
17 import org.eclipse.jface.viewers.TableViewer;
18 import org.eclipse.jface.viewers.TableViewerColumn;
19 import org.eclipse.jface.viewers.Viewer;
20 import org.eclipse.jface.wizard.WizardPage;
21 import org.eclipse.jgit.diff.DiffEntry;
22 import org.eclipse.jgit.lib.Constants;
23 import org.eclipse.swt.SWT;
24 import org.eclipse.swt.events.SelectionAdapter;
25 import org.eclipse.swt.events.SelectionEvent;
26 import org.eclipse.swt.layout.GridData;
27 import org.eclipse.swt.layout.GridLayout;
28 import org.eclipse.swt.widgets.Button;
29 import org.eclipse.swt.widgets.Composite;
30 import org.eclipse.swt.widgets.Group;
31 import org.eclipse.swt.widgets.Label;
32 import org.eclipse.swt.widgets.Table;
33 import org.eclipse.swt.widgets.TableColumn;
35 import com.proalpha.pds.gitutils.Activator;
36 import com.proalpha.pds.gitutils.common.DiffOperation;
48 private Button btnUpdateStartparameter;
49 private Button btnLoadXml;
50 private Button btnCreateDf;
51 private Button btnLoadDf;
52 private Button btnUpdateArtifacts;
55 private TableViewer pdiViewer;
56 private TableViewer artifactsViewer;
59 private Label lblDbCommitId;
60 private Label lblDbNewHeadId;
61 private Label lblArtifactsCommitId;
62 private Label lblArtifNewHeadId;
63 private Label lblArtifactsWarning;
65 private Button btnDelRcodeSmart;
66 private Button btnDelRcodeAll;
67 private Button btnDelRcodeNone;
79 this.settings = settings;
80 this.recoActionSettings = recoSettings;
82 setTitle(
"Action Selection");
83 setMessage(
"Define reconcile actions to refresh your environment", INFORMATION);
84 URL url = FileLocator.find(Platform.getBundle(
Activator.PLUGIN_ID),
new Path(
"icons/pA-logox72.png"),
85 Collections.emptyMap());
87 setImageDescriptor(ImageDescriptor.createFromURL(url));
91 public void createControl(Composite parent) {
93 Composite container =
new Composite(parent, SWT.NULL);
94 setControl(container);
95 container.setLayout(
new GridLayout(1,
false));
96 container.setBackgroundMode(SWT.INHERIT_DEFAULT);
98 GridData gdGrp =
new GridData(SWT.FILL, SWT.FILL,
true,
false, 1, 1);
99 gdGrp.heightHint = 216;
100 gdGrp.widthHint = 450;
102 Group dbFilesGrp =
new Group(container, SWT.NONE);
103 dbFilesGrp.setLayoutData(gdGrp);
104 dbFilesGrp.setText(
"Update database");
105 dbFilesGrp.setBackgroundMode(SWT.INHERIT_DEFAULT);
107 pdiViewer =
new TableViewer(dbFilesGrp);
108 Table pdiTable = pdiViewer.getTable();
109 pdiTable.setBounds(10, 40, 450, 122);
111 TableViewerColumn changeViewerColumn =
new TableViewerColumn(pdiViewer, SWT.NONE);
112 changeViewerColumn.getColumn().setWidth(40);
113 changeViewerColumn.getColumn().setText(
"Chg");
114 changeViewerColumn.getColumn().setAlignment(SWT.LEFT);
115 changeViewerColumn.setLabelProvider(
new DelegatingStyledCellLabelProvider(
new ModifyLabelProvider()));
117 TableViewerColumn fileViewerColumn =
new TableViewerColumn(pdiViewer, SWT.NONE);
118 fileViewerColumn.getColumn().setWidth(380);
119 fileViewerColumn.getColumn().setText(
"Filename");
120 fileViewerColumn.getColumn().setAlignment(SWT.LEFT);
121 fileViewerColumn.setLabelProvider(
new DelegatingStyledCellLabelProvider(
new FileNameLabelProvider()));
123 btnLoadXml =
new Button(dbFilesGrp, SWT.CHECK);
124 btnLoadXml.setText(
"load Xml");
125 btnLoadXml.setBounds(5, 170, 68, 16);
126 btnLoadXml.addSelectionListener(
new SelectionAdapter() {
128 public void widgetSelected(SelectionEvent e) {
129 recoActionSettings.setLoadXml(btnLoadXml.getSelection());
134 btnCreateDf =
new Button(dbFilesGrp, SWT.CHECK);
135 btnCreateDf.setText(
"create DF");
136 btnCreateDf.setBounds(80, 170, 68, 16);
137 btnCreateDf.addSelectionListener(
new SelectionAdapter() {
139 public void widgetSelected(SelectionEvent e) {
140 recoActionSettings.setCreateDf(btnCreateDf.getSelection());
145 btnLoadDf =
new Button(dbFilesGrp, SWT.CHECK);
146 btnLoadDf.setText(
"load DF");
147 btnLoadDf.setBounds(160, 170, 61, 16);
148 btnLoadDf.addSelectionListener(
new SelectionAdapter() {
150 public void widgetSelected(SelectionEvent e) {
151 recoActionSettings.setLoadDf(btnLoadDf.getSelection());
156 btnUpdateStartparameter =
new Button(dbFilesGrp, SWT.CHECK);
157 btnUpdateStartparameter.setText(
"update startparameter");
158 btnUpdateStartparameter.setBounds(5, 190, 143, 16);
159 btnUpdateStartparameter.addSelectionListener(
new SelectionAdapter() {
161 public void widgetSelected(SelectionEvent e) {
162 recoActionSettings.setUpdateStartparam(btnUpdateStartparameter.getSelection());
167 Label lblDbCommit =
new Label(dbFilesGrp, SWT.NONE);
168 lblDbCommit.setBounds(10, 20, 63, 15);
169 lblDbCommit.setText(
"dbCommit:");
171 lblDbCommitId =
new Label(dbFilesGrp, SWT.NONE);
172 lblDbCommitId.setBounds(72, 20, 70, 15);
173 lblDbCommitId.setText(
"");
175 Label lblNewHead =
new Label(dbFilesGrp, SWT.NONE);
176 lblNewHead.setBounds(170, 20, 61, 15);
177 lblNewHead.setText(
"new HEAD:");
179 lblDbNewHeadId =
new Label(dbFilesGrp, SWT.NONE);
180 lblDbNewHeadId.setBounds(230, 20, 70, 15);
181 lblDbNewHeadId.setText(
"");
183 GridData gdCoGrp =
new GridData(SWT.FILL, SWT.TOP,
true,
false, 1, 1);
184 gdCoGrp.heightHint = 162;
185 gdCoGrp.widthHint = 450;
187 Group artifactsFilesGrp =
new Group(container, SWT.NONE);
188 artifactsFilesGrp.setLayoutData(gdCoGrp);
189 artifactsFilesGrp.setText(
"Update artifacts");
190 artifactsFilesGrp.setBackgroundMode(SWT.INHERIT_DEFAULT);
192 artifactsViewer =
new TableViewer(artifactsFilesGrp);
193 Table artifactsTable = artifactsViewer.getTable();
194 artifactsTable.setBounds(15, 40, 450, 94);
196 TableViewerColumn artChangeViewerColumn =
new TableViewerColumn(artifactsViewer, SWT.NONE);
197 TableColumn artChangeTableColumn = artChangeViewerColumn.getColumn();
198 artChangeTableColumn.setWidth(40);
199 artChangeTableColumn.setText(
"Chg");
200 artChangeViewerColumn.setLabelProvider(
new DelegatingStyledCellLabelProvider(
new ModifyLabelProvider()));
202 TableViewerColumn artFileViewerColumn =
new TableViewerColumn(artifactsViewer, SWT.NONE);
203 TableColumn artFileTableColumn = artFileViewerColumn.getColumn();
204 artFileTableColumn.setWidth(380);
205 artFileTableColumn.setText(
"Filename");
206 artFileTableColumn.setAlignment(SWT.LEFT);
207 artFileViewerColumn.setLabelProvider(
new DelegatingStyledCellLabelProvider(
new FileNameLabelProvider()));
209 btnUpdateArtifacts =
new Button(artifactsFilesGrp, SWT.CHECK);
210 btnUpdateArtifacts.setBounds(5, 140, 105, 16);
211 btnUpdateArtifacts.setText(
"update artifacts");
212 btnUpdateArtifacts.addSelectionListener(
new SelectionAdapter() {
214 public void widgetSelected(SelectionEvent e) {
215 recoActionSettings.setUpdateArtifacts(btnUpdateArtifacts.getSelection());
219 lblArtifactsWarning =
new Label(artifactsFilesGrp, SWT.NONE);
220 lblArtifactsWarning.setText(
"");
221 lblArtifactsWarning.setBounds(5, 160, 450, 16);
223 Label lblArtifactscommit =
new Label(artifactsFilesGrp, SWT.NONE);
224 lblArtifactscommit.setText(
"artifactsCommit:");
225 lblArtifactscommit.setBounds(10, 20, 89, 15);
227 lblArtifactsCommitId =
new Label(artifactsFilesGrp, SWT.NONE);
228 lblArtifactsCommitId.setText(
"");
229 lblArtifactsCommitId.setBounds(100, 20, 70, 15);
231 Label lblArtifNewHead =
new Label(artifactsFilesGrp, SWT.NONE);
232 lblArtifNewHead.setText(
"new HEAD:");
233 lblArtifNewHead.setBounds(170, 20, 61, 15);
235 lblArtifNewHeadId =
new Label(artifactsFilesGrp, SWT.NONE);
236 lblArtifNewHeadId.setText(
"");
237 lblArtifNewHeadId.setBounds(230, 20, 70, 15);
239 Group grpUpdateMisc =
new Group(container, SWT.NONE);
240 GridData gdGrpUpdateMisc =
new GridData(SWT.FILL, SWT.CENTER,
true,
false, 1, 1);
241 gdGrpUpdateMisc.widthHint = 450;
242 gdGrpUpdateMisc.heightHint = 25;
243 grpUpdateMisc.setLayoutData(gdGrpUpdateMisc);
244 grpUpdateMisc.setText(
"Delete Rcode");
245 grpUpdateMisc.setBackgroundMode(SWT.INHERIT_DEFAULT);
247 btnDelRcodeSmart =
new Button(grpUpdateMisc, SWT.RADIO);
248 btnDelRcodeSmart.setBounds(30, 20, 144, 16);
249 btnDelRcodeSmart.setText(
"Only wrong (crc check)");
251 btnDelRcodeAll =
new Button(grpUpdateMisc, SWT.RADIO);
252 btnDelRcodeAll.setBounds(180, 20, 43, 16);
253 btnDelRcodeAll.setText(
"All");
254 btnDelRcodeAll.setEnabled(
false);
256 btnDelRcodeNone =
new Button(grpUpdateMisc, SWT.RADIO);
257 btnDelRcodeNone.setText(
"None");
258 btnDelRcodeNone.setBounds(229, 20, 50, 16);
262 public void setVisible(
boolean visible) {
263 super.setVisible(visible);
276 private void initialize() {
278 if (!settings.getDbCommit().isEmpty()) {
280 DiffOperation diffOp =
new DiffOperation(settings.getRepository(), Constants.DEFAULT_REMOTE_NAME,
281 settings.getSourceBranch(), settings.getTargetBranch(), settings.isUpdateSourceBranch(),
282 settings.isUpdateTargetBranch(), settings.getDbCommit(), settings.getArtifactsCommit());
285 }
catch (InvocationTargetException e) {
290 lblArtifNewHeadId.setText(diffOp.getNewHead().substring(0, 10));
291 lblDbNewHeadId.setText(diffOp.getNewHead().substring(0, 10));
292 lblDbCommitId.setText(settings.getDbCommit().substring(0, 10));
293 lblArtifactsCommitId.setText(settings.getArtifactsCommit().substring(0, 10));
295 fillTableView(pdiViewer, diffOp.getPdiDiffList());
296 fillTableView(artifactsViewer, diffOp.getStateInfoDiffList());
298 if (diffOp.isAssembliesXmlChanged()) {
299 lblArtifactsWarning.setText(
"assemblies.xml changed! You may have to compile if you are working with r-code.");
302 recoActionSettings.
deriveFromDiff(diffOp.getPdiDiffList(), diffOp.getStateInfoDiffList());
305 btnLoadXml.setSelection(recoActionSettings.isLoadXml());
306 btnCreateDf.setSelection(recoActionSettings.isCreateDf());
307 btnLoadDf.setSelection(recoActionSettings.isLoadDf());
308 btnUpdateArtifacts.setSelection(recoActionSettings.isUpdateArtifacts());
309 btnUpdateStartparameter.setSelection(recoActionSettings.isUpdateStartparam());
310 btnDelRcodeSmart.setSelection(recoActionSettings.getDeleteRcodeTyper() == DeleteRcodeType.SMART);
311 btnDelRcodeAll.setSelection(recoActionSettings.getDeleteRcodeTyper() == DeleteRcodeType.ALL);
312 btnDelRcodeNone.setSelection(recoActionSettings.getDeleteRcodeTyper() == DeleteRcodeType.NONE);
320 private void fillTableView(TableViewer tableViewer, List<DiffEntry> diffList) {
321 tableViewer.setContentProvider(
new DiffProvider());
322 tableViewer.setInput(diffList);
323 tableViewer.getTable().setHeaderVisible(
true);
324 tableViewer.getTable().setLinesVisible(
true);
328 public boolean canFlipToNextPage() {
333 class ModifyLabelProvider
extends LabelProvider implements IStyledLabelProvider {
336 public StyledString getStyledText(Object element) {
337 if (element instanceof DiffEntry) {
338 DiffEntry entry = (DiffEntry) element;
339 return new StyledString(entry.getChangeType().toString().substring(0, 3));
346 class FileNameLabelProvider
extends LabelProvider implements IStyledLabelProvider {
349 public StyledString getStyledText(Object element) {
350 if (element instanceof DiffEntry) {
351 DiffEntry entry = (DiffEntry) element;
352 if (entry.getNewPath().isEmpty() || entry.getNewPath().equalsIgnoreCase(
"/dev/null"))
353 return new StyledString(entry.getOldPath().substring(entry.getOldPath().lastIndexOf(
'/') + 1));
354 return new StyledString(entry.getNewPath().substring(entry.getNewPath().lastIndexOf(
'/') + 1));
361 class DiffProvider
implements IStructuredContentProvider {
364 public void dispose() {
369 public Object[] getElements(Object inputElement) {
370 if (inputElement instanceof List) {
371 return ((List<?>) inputElement).toArray();
373 return new Object[0];
377 public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
void deriveFromDiff(List<?> pdiDiffList, List<?> stateInfoDiffList)
SelectActionPage(FeatureBranchSettings settings, ReconcileActionSettings recoSettings)