1 package com.proalpha.pds.checks;
4 import java.text.Collator;
5 import java.text.ParseException;
6 import java.text.SimpleDateFormat;
8 import java.util.GregorianCalendar;
9 import java.util.Iterator;
10 import java.util.Locale;
12 import javax.xml.datatype.XMLGregorianCalendar;
14 import org.eclipse.core.filesystem.EFS;
15 import org.eclipse.core.filesystem.IFileStore;
16 import org.eclipse.core.resources.IProject;
17 import org.eclipse.core.resources.ResourcesPlugin;
18 import org.eclipse.jface.action.IToolBarManager;
19 import org.eclipse.jface.resource.ImageDescriptor;
20 import org.eclipse.jface.resource.JFaceResources;
21 import org.eclipse.jface.text.BadLocationException;
22 import org.eclipse.jface.text.IDocument;
23 import org.eclipse.jface.viewers.ArrayContentProvider;
24 import org.eclipse.jface.viewers.ColumnLabelProvider;
25 import org.eclipse.jface.viewers.ISelection;
26 import org.eclipse.jface.viewers.IStructuredSelection;
27 import org.eclipse.jface.viewers.TableViewer;
28 import org.eclipse.jface.viewers.TableViewerColumn;
29 import org.eclipse.swt.SWT;
30 import org.eclipse.swt.graphics.Image;
31 import org.eclipse.swt.graphics.Point;
32 import org.eclipse.swt.layout.GridData;
33 import org.eclipse.swt.layout.GridLayout;
34 import org.eclipse.swt.program.Program;
35 import org.eclipse.swt.widgets.Composite;
36 import org.eclipse.swt.widgets.Event;
37 import org.eclipse.swt.widgets.Listener;
38 import org.eclipse.swt.widgets.Menu;
39 import org.eclipse.swt.widgets.MenuItem;
40 import org.eclipse.swt.widgets.Table;
41 import org.eclipse.swt.widgets.TableColumn;
42 import org.eclipse.swt.widgets.TableItem;
43 import org.eclipse.swt.widgets.Text;
44 import org.eclipse.ui.IEditorPart;
45 import org.eclipse.ui.ISelectionListener;
46 import org.eclipse.ui.IWorkbenchPage;
47 import org.eclipse.ui.IWorkbenchPart;
48 import org.eclipse.ui.PartInitException;
49 import org.eclipse.ui.PlatformUI;
50 import org.eclipse.ui.forms.events.HyperlinkEvent;
51 import org.eclipse.ui.forms.events.IHyperlinkListener;
52 import org.eclipse.ui.forms.widgets.ExpandableComposite;
53 import org.eclipse.ui.forms.widgets.Form;
54 import org.eclipse.ui.forms.widgets.FormToolkit;
55 import org.eclipse.ui.forms.widgets.Hyperlink;
56 import org.eclipse.ui.forms.widgets.Section;
57 import org.eclipse.ui.ide.IDE;
58 import org.eclipse.ui.part.ViewPart;
59 import org.eclipse.ui.texteditor.IDocumentProvider;
60 import org.eclipse.ui.texteditor.ITextEditor;
62 import com.proalpha.pds.jaxb.DsDSConsistencyChecks.TtDSCheck.TtDSSubCheck;
63 import com.proalpha.pds.jaxb.DsDSConsistencyChecks.TtDSCheck.TtDSSubCheck.TtDSLogEntryRepos;
64 import com.proalpha.pds.jaxb.DsDSConsistencyChecks.TtDSCheck.TtDSSubCheck.TtDSLogEntrySrc;
65 import com.proalpha.pds.util.AddToCodeCheckedBy;
66 import com.proalpha.pds.util.SendCheckInfoEmail;
68 public class SubCheckView extends ViewPart implements ISelectionListener {
70 public static final String ID =
"com.proalpha.pds.checks.SubCheckView";
71 private FormToolkit toolkit;
73 private Text lastUser;
74 private Text reported;
75 private Text objectID;
78 private Text description;
79 private TableViewer viewer;
80 private Text codeFragment;
81 private Hyperlink backgroundInfoUrl;
82 private ConsistencyChecksImageProvider imageProvider;
83 private String selectedProjectName;
85 private Image mailImage;
86 private Image codecheckedbyImage;
90 imageProvider =
new ConsistencyChecksImageProvider();
94 public void dispose() {
95 if (mailImage !=
null)
97 if (codecheckedbyImage !=
null)
98 codecheckedbyImage.dispose();
102 private void clearDetailSection() {
110 backgroundInfoUrl.setText(
"");
113 private void clearTableSection() {
114 if (!viewer.getTable().isDisposed()) {
115 viewer.getTable().removeAll();
116 viewer.setInput(
null);
117 viewer.refresh(
true);
119 setPartName(
"Consistency Subchecks");
120 setTitleImage(imageProvider.getDefaultImage());
124 private void createDetailSection() {
125 Section sectionDetails = toolkit.createSection(form.getBody(),
126 ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE);
127 sectionDetails.setText(
"Details");
129 GridLayout layout =
new GridLayout();
130 layout.numColumns = 4;
131 sectionDetails.setLayout(layout);
132 sectionDetails.setLayoutData(
new GridData(GridData.FILL_HORIZONTAL));
133 sectionDetails.setExpanded(
true);
135 Composite compositeDetails = toolkit.createComposite(sectionDetails);
136 compositeDetails.setLayout(layout);
137 sectionDetails.setClient(compositeDetails);
139 toolkit.createLabel(compositeDetails,
"Last User");
140 toolkit.createLabel(compositeDetails,
"Reported");
141 toolkit.createLabel(compositeDetails,
"Line");
142 toolkit.createLabel(compositeDetails,
"Module");
144 lastUser = toolkit.createText(compositeDetails,
"");
145 lastUser.setLayoutData(
new GridData(GridData.FILL_HORIZONTAL));
147 reported = toolkit.createText(compositeDetails,
"");
148 reported.setLayoutData(
new GridData(GridData.FILL_HORIZONTAL));
150 line = toolkit.createText(compositeDetails,
"");
151 line.setLayoutData(
new GridData(GridData.FILL_HORIZONTAL));
153 module = toolkit.createText(compositeDetails,
"");
154 module.setLayoutData(
new GridData(GridData.FILL_HORIZONTAL));
156 toolkit.createLabel(compositeDetails,
"URL");
157 toolkit.createLabel(compositeDetails,
"");
158 toolkit.createLabel(compositeDetails,
"");
159 toolkit.createLabel(compositeDetails,
"");
161 backgroundInfoUrl = toolkit.createHyperlink(compositeDetails,
"", SWT.MULTI | SWT.WRAP);
162 backgroundInfoUrl.addHyperlinkListener(
new IHyperlinkListener() {
165 public void linkExited(HyperlinkEvent arg0) {
170 public void linkEntered(HyperlinkEvent arg0) {
175 public void linkActivated(HyperlinkEvent event) {
176 if (!event.getLabel().isEmpty()) {
177 Program.launch(event.getLabel());
181 GridData urlGridData =
new GridData(GridData.FILL_BOTH);
182 urlGridData.horizontalSpan = 4;
183 backgroundInfoUrl.setLayoutData(urlGridData);
185 toolkit.createLabel(compositeDetails,
"Object");
186 toolkit.createLabel(compositeDetails,
"Description");
187 toolkit.createLabel(compositeDetails,
"Code Fragment");
188 toolkit.createLabel(compositeDetails,
"");
190 objectID = toolkit.createText(compositeDetails,
"", SWT.MULTI | SWT.WRAP);
191 GridData objectIDData =
new GridData();
192 objectIDData.horizontalSpan = 1;
193 objectIDData.heightHint = 100;
194 objectIDData.widthHint = 100;
195 objectIDData.horizontalAlignment = SWT.FILL;
196 objectID.setLayoutData(objectIDData);
198 GridData descData =
new GridData();
199 descData.horizontalSpan = 1;
200 descData.heightHint = 100;
201 descData.horizontalAlignment = SWT.FILL;
203 description = toolkit.createText(compositeDetails,
"", SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
204 description.setLayoutData(descData);
206 codeFragment = toolkit.createText(compositeDetails,
"", SWT.MULTI | SWT.V_SCROLL);
208 GridData codeFragmentData =
new GridData();
209 codeFragmentData.horizontalSpan = 2;
210 codeFragmentData.heightHint = 100;
211 codeFragmentData.horizontalAlignment = SWT.FILL;
212 codeFragment.setLayoutData(codeFragmentData);
213 codeFragment.setFont(JFaceResources.getFont(
"Courier New"));
218 public void createPartControl(Composite parent) {
219 toolkit =
new FormToolkit(parent.getDisplay());
220 form = toolkit.createForm(parent);
222 GridLayout formLayout =
new GridLayout();
223 formLayout.numColumns = 1;
224 form.getBody().setLayout(formLayout);
225 form.getBody().setLayoutData(
new GridData(GridData.FILL_BOTH));
227 IToolBarManager toolBarMgr = getViewSite().getActionBars().getToolBarManager();
228 toolBarMgr.update(
true);
229 createTableSection();
230 createDetailSection();
232 getSite().setSelectionProvider(viewer);
233 getViewSite().getPage().addSelectionListener(
this);
237 private void createTableSection() {
238 Section tableSection = toolkit.createSection(form.getBody(), ExpandableComposite.NO_TITLE);
239 tableSection.setExpanded(
true);
240 tableSection.setLayout(
new GridLayout());
241 GridData sectionTableData =
new GridData(GridData.FILL_BOTH);
242 sectionTableData.minimumHeight = 100;
243 tableSection.setLayoutData(sectionTableData);
244 Composite compositeTable = toolkit.createComposite(tableSection);
245 compositeTable.setLayout(
new GridLayout());
246 compositeTable.setLayoutData(
new GridData(GridData.FILL_BOTH));
247 tableSection.setClient(compositeTable);
248 viewer =
new TableViewer(compositeTable, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
249 Table table = viewer.getTable();
250 table.setHeaderVisible(
true);
251 table.setLinesVisible(
true);
252 GridData data =
new GridData(GridData.FILL_BOTH);
253 data.grabExcessVerticalSpace =
true;
254 table.setLayoutData(data);
255 configureTable(table);
257 table.addListener(SWT.MouseDown, event -> {
258 TableItem item = table.getItem(new Point(event.x, event.y));
261 clearDetailSection();
265 addContextMenu(table);
267 viewer.setContentProvider(
new ArrayContentProvider());
268 viewer.addDoubleClickListener(event -> {
269 TableViewer source = (TableViewer) event.getSource();
270 IStructuredSelection selection = (IStructuredSelection) source.getSelection();
271 Object firstElement = selection.getFirstElement();
273 if (firstElement instanceof TtDSLogEntrySrc && selectedProjectName !=
null) {
274 IProject selectedProject = ResourcesPlugin.getWorkspace().getRoot().getProject(selectedProjectName);
275 if (selectedProject !=
null) {
276 File projectFile = selectedProject.getRawLocation().makeAbsolute().toFile();
277 String sourceFileName = ((TtDSLogEntrySrc) firstElement).getSourceFileName();
278 File fileToOpen = searchFile(
new File(projectFile.toPath().toAbsolutePath() +
"\\src"),
281 if (fileToOpen !=
null && fileToOpen.isFile()) {
282 int lineToJump = ((TtDSLogEntrySrc) firstElement).getSourceFileLine() - 1;
283 openFileInEditor(lineToJump, fileToOpen);
289 viewer.addSelectionChangedListener(event -> {
290 ISelection selection =
event.getSelection();
291 if (selection instanceof IStructuredSelection) {
292 updateDetailSection(((IStructuredSelection) selection).getFirstElement());
297 viewer.addFilter(filter);
300 private void openFileInEditor(
int lineToJump, File fileToOpen) {
302 IFileStore fileStore = EFS.getLocalFileSystem().getStore(fileToOpen.toURI());
303 IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
304 IEditorPart editor = IDE.openEditorOnFileStore(page, fileStore);
306 if (editor instanceof ITextEditor) {
307 IDocumentProvider provider = ((ITextEditor) editor).getDocumentProvider();
308 IDocument document = provider.getDocument(editor.getEditorInput());
313 start = document.getLineOffset(lineToJump);
314 ((ITextEditor) editor).selectAndReveal(start, 0);
316 }
catch (PartInitException | BadLocationException e) {
321 private MenuItem addContextMenu(Table table) {
322 Menu tableContextMenu =
new Menu(table);
323 table.setMenu(tableContextMenu);
325 MenuItem sendAsMailMenuItem =
new MenuItem(tableContextMenu, SWT.NONE);
326 sendAsMailMenuItem.setText(
"Send as Mail");
327 mailImage = ImageDescriptor.createFromURL(getClass().getResource(
"/images/mail.png")).createImage();
328 sendAsMailMenuItem.setImage(mailImage);
330 MenuItem addToCodeCheckedBy =
new MenuItem(tableContextMenu, SWT.NONE);
331 addToCodeCheckedBy.setText(
"Add to codecheckedby.xml");
332 codecheckedbyImage = ImageDescriptor.createFromURL(getClass().getResource(
"/images/bug_green.png"))
334 addToCodeCheckedBy.setImage(codecheckedbyImage);
336 sendAsMailMenuItem.addListener(SWT.Selection, event -> {
337 SendCheckInfoEmail mail = new SendCheckInfoEmail();
338 mail.send(viewer.getSelection(), selectedProjectName != null ? selectedProjectName :
"Unknown project");
341 addToCodeCheckedBy.addListener(SWT.Selection, event -> {
342 AddToCodeCheckedBy addToCCB = new AddToCodeCheckedBy();
343 addToCCB.add(viewer.getSelection(), selectedProjectName);
346 table.addListener(SWT.MenuDetect, event -> {
347 if (table.getSelectionCount() <= 0) {
350 Iterator<?> it = ((IStructuredSelection) viewer.getSelection()).iterator();
352 while (it.hasNext()) {
354 if (object instanceof TtDSLogEntryRepos) {
355 addToCodeCheckedBy.setEnabled(true);
358 addToCodeCheckedBy.setEnabled(false);
363 return addToCodeCheckedBy;
366 private File searchFile(File file, String search) {
367 if (file.isDirectory()) {
368 File[] arr = file.listFiles();
370 File found = searchFile(f, search);
375 if (file.getName().equals(search)) {
382 private void configureTable(Table table) {
383 createLastUserColum(table);
384 createReportedColumn(table);
385 createObjectColumn(table);
386 createLineColumn(table);
387 createModuleColumn(table);
388 createDescriptionColumn(table);
391 private void createObjectColumn(Table table) {
392 TableColumn objectColumn = createTableColumn(table,
"Object");
393 TableViewerColumn objectViewerColumn =
new TableViewerColumn(viewer, objectColumn);
394 objectViewerColumn.setLabelProvider(
new ColumnLabelProvider() {
396 public String getText(Object element) {
397 String resultText = super.getText(element);
398 if (element instanceof TtDSLogEntrySrc) {
399 resultText = ((TtDSLogEntrySrc) element).getSourceFileName();
400 }
else if (element instanceof TtDSLogEntryRepos) {
401 resultText = ((TtDSLogEntryRepos) element).getOwningID();
406 objectColumn.addListener(SWT.Selection, createSortListener(table));
409 private void createLineColumn(Table table) {
410 TableColumn lineColumn = createTableColumn(table,
"Line");
411 TableViewerColumn lineViewerColumn =
new TableViewerColumn(viewer, lineColumn);
412 lineViewerColumn.setLabelProvider(
new ColumnLabelProvider() {
414 public String getText(Object element) {
415 String resultText = super.getText(element);
416 if (element instanceof TtDSLogEntrySrc) {
417 resultText = String.valueOf(((TtDSLogEntrySrc) element).getSourceFileLine());
418 }
else if (element instanceof TtDSLogEntryRepos) {
424 lineColumn.addListener(SWT.Selection, createSortIntListener(table));
427 private void createModuleColumn(Table table) {
428 TableColumn moduleColumn = createTableColumn(table,
"Module");
429 TableViewerColumn moduleViewerColumn =
new TableViewerColumn(viewer, moduleColumn);
430 moduleViewerColumn.setLabelProvider(
new ColumnLabelProvider() {
432 public String getText(Object element) {
433 String resultText = super.getText(element);
434 if (element instanceof TtDSLogEntrySrc) {
435 resultText = ((TtDSLogEntrySrc) element).getModule();
436 }
else if (element instanceof TtDSLogEntryRepos) {
437 resultText = ((TtDSLogEntryRepos) element).getModule();
442 moduleColumn.addListener(SWT.Selection, createSortListener(table));
445 private void createDescriptionColumn(Table table) {
446 TableColumn descriptionColumn = createTableColumn(table,
"Description");
447 TableViewerColumn descriptionViewerColumn =
new TableViewerColumn(viewer, descriptionColumn);
448 descriptionViewerColumn.setLabelProvider(
new ColumnLabelProvider() {
450 public String getText(Object element) {
451 String resultText = super.getText(element);
452 if (element instanceof TtDSLogEntrySrc) {
453 resultText = ((TtDSLogEntrySrc) element).getLogEntryDescription();
454 }
else if (element instanceof TtDSLogEntryRepos) {
455 resultText = ((TtDSLogEntryRepos) element).getLogEntryDescription();
460 descriptionColumn.addListener(SWT.Selection, createSortListener(table));
463 private void createReportedColumn(Table table) {
464 TableColumn reportedColumn = createTableColumn(table,
"Reported");
465 TableViewerColumn reportedViewerColumn =
new TableViewerColumn(viewer, reportedColumn);
466 reportedViewerColumn.setLabelProvider(
new ColumnLabelProvider() {
468 public String getText(Object element) {
469 String resultText = super.getText(element);
470 SimpleDateFormat dateFormat =
new SimpleDateFormat(
"dd.MM.yyyy HH:mm:ss");
471 GregorianCalendar calendar =
null;
473 if (element instanceof TtDSLogEntrySrc) {
474 calendar = ((TtDSLogEntrySrc) element).getReportedFirst().toGregorianCalendar();
475 }
else if (element instanceof TtDSLogEntryRepos) {
476 calendar = ((TtDSLogEntryRepos) element).getReportedFirst().toGregorianCalendar();
478 if (calendar !=
null) {
479 dateFormat.setTimeZone(calendar.getTimeZone());
480 resultText = dateFormat.format(calendar.getTime());
485 reportedColumn.addListener(SWT.Selection, createSortDateListener(table));
488 private void createLastUserColum(Table table) {
489 TableColumn lastUserColumn = createTableColumn(table,
"Last User");
490 TableViewerColumn lastUserViewerColumn =
new TableViewerColumn(viewer, lastUserColumn);
491 lastUserViewerColumn.setLabelProvider(
new ColumnLabelProvider() {
493 public String getText(Object element) {
494 String resultText = super.getText(element);
495 if (element instanceof TtDSLogEntrySrc) {
496 resultText = ((TtDSLogEntrySrc) element).getLastUser();
497 }
else if (element instanceof TtDSLogEntryRepos) {
498 resultText = ((TtDSLogEntryRepos) element).getLastUser();
503 lastUserColumn.addListener(SWT.Selection, createSortListener(table));
506 private Listener createSortListener(
final Table table) {
507 return new Listener() {
508 public void handleEvent(Event e) {
509 TableItem[] items = table.getItems();
510 TableColumn column = (TableColumn) e.widget;
512 int direction = getSortDirection(table, column);
513 int index = getColumnIndex(table, column);
516 Collator collator = Collator.getInstance(Locale.getDefault());
517 for (
int i = 0; i < items.length; i++) {
518 String value1 = items[i].getText(index);
519 for (
int j = 0; j < i; j++) {
520 String value2 = items[j].getText(index);
521 if (collator.compare(value1, value2) * direction <= 0) {
522 String[] itemValues = { items[i].getText(0), items[i].getText(1), items[i].getText(2),
523 items[i].getText(3), items[i].getText(4), items[i].getText(5) };
524 Object itemData = items[i].getData();
526 TableItem item =
new TableItem(table, SWT.NONE, j);
527 item.setText(itemValues);
528 item.setData(itemData);
529 items = table.getItems();
537 private int getColumnIndex(Table table, TableColumn column) {
539 for (TableColumn tableColumn : table.getColumns()) {
541 if (tableColumn.getText().equals(column.getText())) {
551 private Listener createSortDateListener(
final Table table) {
552 return new Listener() {
553 public void handleEvent(Event e) {
554 TableItem[] items = table.getItems();
555 TableColumn column = (TableColumn) e.widget;
557 int direction = getSortDirection(table, column);
558 int index = table.indexOf(column);
561 SimpleDateFormat dateFormatter =
new SimpleDateFormat(
"dd.MM.yyyy HH:mm:ss");
562 for (
int i = 0; i < items.length; i++) {
565 value1 = dateFormatter.parse(items[i].getText(index));
566 }
catch (ParseException e1) {
569 for (
int j = 0; j < i; j++) {
572 value2 = dateFormatter.parse(items[j].getText(index));
573 }
catch (ParseException e1) {
576 if (value1.compareTo(value2) * direction <= 0) {
577 String[] itemValues = { items[i].getText(0), items[i].getText(1), items[i].getText(2),
578 items[i].getText(3), items[i].getText(4), items[i].getText(5) };
579 Object itemData = items[i].getData();
581 TableItem item =
new TableItem(table, SWT.NONE, j);
582 item.setText(itemValues);
583 item.setData(itemData);
584 items = table.getItems();
594 private Listener createSortIntListener(
final Table table) {
595 return new Listener() {
596 public void handleEvent(Event e) {
597 TableItem[] items = table.getItems();
598 TableColumn column = (TableColumn) e.widget;
600 int direction = getSortDirection(table, column);
601 int index = table.indexOf(column);
605 for (
int i = 0; i < items.length; i++) {
606 int value1 = Integer.parseInt(items[i].getText(index));
607 for (
int j = 0; j < i; j++) {
608 int value2 = Integer.parseInt(items[j].getText(index));
609 if (Integer.compare(value1, value2) * direction <= 0) {
610 String[] itemValues = { items[i].getText(0), items[i].getText(1), items[i].getText(2),
611 items[i].getText(3), items[i].getText(4), items[i].getText(5) };
612 Object itemData = items[i].getData();
614 TableItem item =
new TableItem(table, SWT.NONE, j);
615 item.setText(itemValues);
616 item.setData(itemData);
617 items = table.getItems();
627 private int getSortDirection(Table table, TableColumn column) {
628 table.setSortColumn(column);
629 int direction = table.getSortDirection();
630 if (direction == SWT.UP) {
631 table.setSortDirection(SWT.DOWN);
633 }
else if (direction == SWT.DOWN) {
634 table.setSortDirection(SWT.NONE);
637 table.setSortDirection(SWT.UP);
643 private TableColumn createTableColumn(Table table, String header) {
644 TableColumn column =
new TableColumn(table, SWT.NONE);
645 column.setText(header);
646 column.setWidth(100);
647 column.setResizable(
true);
651 public void selectionChanged(IWorkbenchPart part, ISelection selection) {
652 if (part !=
null && selection !=
null) {
653 if ((!(part instanceof CheckTreeView)) || (viewer.getTable().isDisposed())) {
654 if (!selection.isEmpty() && (selection instanceof IStructuredSelection)) {
655 IStructuredSelection structuredSelection = ((IStructuredSelection) selection);
656 if (structuredSelection.size() > 1) {
657 clearDetailSection();
663 clearDetailSection();
666 if (!selection.isEmpty() && (selection instanceof IStructuredSelection)) {
667 if (part instanceof CheckTreeView) {
668 selectedProjectName = ((CheckTreeView) part).getSelectedProject();
669 filter.setSearchFilter(((CheckTreeView) part).getCurrentTeam(),
670 ((CheckTreeView) part).getCurrentModule());
673 IStructuredSelection structuredSelection = ((IStructuredSelection) selection);
674 Object firstSelectedElement = structuredSelection.getFirstElement();
675 if (firstSelectedElement instanceof TtDSSubCheck) {
676 updateTableSection((TtDSSubCheck) firstSelectedElement);
677 }
else if ((firstSelectedElement instanceof TtDSLogEntrySrc)
678 || (firstSelectedElement instanceof TtDSLogEntryRepos)) {
679 updateDetailSection(firstSelectedElement);
685 private void updateTableSection(TtDSSubCheck subcheck) {
686 Boolean hasInput = Boolean.FALSE;
687 Object viewerInput =
null;
689 if (!subcheck.getTtDSLogEntrySrc().isEmpty()) {
690 viewerInput = subcheck.getTtDSLogEntrySrc().toArray();
691 hasInput = Boolean.TRUE;
692 }
else if (!subcheck.getTtDSLogEntryRepos().isEmpty()) {
693 viewerInput = subcheck.getTtDSLogEntryRepos();
694 hasInput = Boolean.TRUE;
697 if (Boolean.TRUE.equals(hasInput)) {
699 viewer.getTable().removeAll();
700 viewer.setInput(viewerInput);
701 viewer.refresh(
true);
703 for (TableColumn column : viewer.getTable().getColumns())
706 setUrl(subcheck.getBackgroundInfoURL());
707 setPartName(subcheck.getDSSubCheckID());
708 setTitleImage(imageProvider.getImage(subcheck));
712 private void setUrl(String url) {
713 backgroundInfoUrl.setText((url !=
null) ? url :
"");
717 private void setDescription(String text) {
718 description.setText((text !=
null) ? text :
"");
722 public void setFocus() {
726 private void setLastUser(String text) {
727 lastUser.setText((text !=
null) ? text :
"");
730 private void setLine(String text) {
731 line.setText((text !=
null) ? text :
"");
734 private void setCodeFragment(String text) {
735 codeFragment.setText((text !=
null) ? text :
"");
738 private void setModule(String text) {
739 module.setText((text !=
null) ? text :
"");
742 private void setLogEntryReposDetails(TtDSLogEntryRepos entryRepos) {
743 setLastUser(entryRepos.getLastUser());
744 setReported(entryRepos.getReportedFirst());
745 setObjectID(entryRepos.getOwningID().replace(
", ",
",\n"));
747 setModule(entryRepos.getModule());
748 setDescription(entryRepos.getLogEntryDescription());
752 private void setLogEntrySrcDetails(TtDSLogEntrySrc entrySrc) {
753 setLastUser(entrySrc.getLastUser());
754 setReported(entrySrc.getReportedFirst());
755 setObjectID(entrySrc.getSourceFileName());
756 setLine(String.valueOf(entrySrc.getSourceFileLine()));
757 setModule(entrySrc.getModule());
758 setDescription(entrySrc.getLogEntryDescription());
759 setCodeFragment(entrySrc.getStatement());
762 private void setObjectID(String text) {
763 objectID.setText((text !=
null) ? text :
"");
766 private void setReported(String text) {
767 reported.setText((text !=
null) ? text :
"");
770 private void setReported(XMLGregorianCalendar calendar) {
771 if (calendar !=
null) {
772 setReported(calendar.getDay() +
"." + calendar.getMonth() +
"." + calendar.getYear());
778 private void updateDetailSection(Object entry) {
779 if (entry instanceof TtDSLogEntrySrc) {
780 setLogEntrySrcDetails((TtDSLogEntrySrc) entry);
781 }
else if (entry instanceof TtDSLogEntryRepos) {
782 setLogEntryReposDetails((TtDSLogEntryRepos) entry);
784 clearDetailSection();