1 package org.simantics.interop.ui;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collection;
\r
5 import java.util.List;
\r
7 import org.eclipse.jface.viewers.ILabelProviderListener;
\r
8 import org.eclipse.jface.viewers.IStructuredContentProvider;
\r
9 import org.eclipse.jface.viewers.IStructuredSelection;
\r
10 import org.eclipse.jface.viewers.ITableLabelProvider;
\r
11 import org.eclipse.jface.viewers.TableViewer;
\r
12 import org.eclipse.jface.viewers.Viewer;
\r
13 import org.eclipse.swt.SWT;
\r
14 import org.eclipse.swt.events.SelectionAdapter;
\r
15 import org.eclipse.swt.events.SelectionEvent;
\r
16 import org.eclipse.swt.graphics.Image;
\r
17 import org.eclipse.swt.layout.FillLayout;
\r
18 import org.eclipse.swt.layout.GridData;
\r
19 import org.eclipse.swt.layout.GridLayout;
\r
20 import org.eclipse.swt.widgets.Button;
\r
21 import org.eclipse.swt.widgets.Composite;
\r
22 import org.eclipse.ui.part.ViewPart;
\r
23 import org.simantics.interop.issues.Issue;
\r
24 import org.simantics.interop.issues.IssueReporter;
\r
25 import org.simantics.interop.issues.IssueReporterListener;
\r
27 public class IssuesViewPart extends ViewPart {
\r
29 private Composite parent;
\r
30 private TableViewer viewer;
\r
33 public IssuesViewPart() {
\r
34 // TODO Auto-generated constructor stub
\r
38 public void createPartControl(Composite parent) {
\r
39 this.parent = parent;
\r
40 this.parent.setLayout(new GridLayout(1,false));
\r
41 viewer = new TableViewer(parent);
\r
42 viewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
\r
43 viewer.setContentProvider(new IssueContentProvider());
\r
44 viewer.setLabelProvider(new IssueLabelProvider());
\r
46 viewer.setInput(IssueReporter.getInstance().getIssues());
\r
48 Composite buttonComposite = new Composite(parent, SWT.BORDER);
\r
49 buttonComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
\r
50 Button clearButton = new Button(buttonComposite, SWT.PUSH);
\r
51 clearButton.setText("Clear all");
\r
52 clearButton.addSelectionListener(new SelectionAdapter() {
\r
54 public void widgetSelected(SelectionEvent e) {
\r
55 Collection<Issue> issues = IssueReporter.getInstance().getIssues();
\r
56 for (Issue i : issues)
\r
61 Button showButton = new Button(buttonComposite, SWT.PUSH);
\r
62 showButton.setText("Show in editor");
\r
63 showButton.addSelectionListener(new SelectionAdapter() {
\r
65 public void widgetSelected(SelectionEvent e) {
\r
66 IStructuredSelection sel = (IStructuredSelection)viewer.getSelection();
\r
69 Issue i = (Issue)sel.getFirstElement();
\r
70 if (i.supportsEditor())
\r
79 public void setFocus() {
\r
84 private class IssueContentProvider implements IStructuredContentProvider {
\r
85 private IssueReporterListener listener;
\r
86 private Viewer viewer;
\r
88 public IssueContentProvider() {
\r
89 listener = new IssueReporterListener() {
\r
92 public void updated(Issue issue) {
\r
97 public void removed(Issue issue) {
\r
98 viewer.setInput(IssueReporter.getInstance().getIssues());
\r
102 public void added(Issue issue) {
\r
103 viewer.setInput(IssueReporter.getInstance().getIssues());
\r
106 IssueReporter.getInstance().addListener(listener);
\r
110 @SuppressWarnings("unchecked")
\r
112 public Object[] getElements(Object inputElement) {
\r
113 Collection<Issue> issues = (Collection<Issue>)inputElement;
\r
114 return issues.toArray();
\r
118 public void dispose() {
\r
119 IssueReporter.getInstance().removeListener(listener);
\r
123 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
\r
124 this.viewer = viewer;
\r
128 private class IssueLabelProvider implements ITableLabelProvider {
\r
130 private List<ILabelProviderListener> listeners = new ArrayList<ILabelProviderListener>();
\r
133 public Image getColumnImage(Object element, int columnIndex) {
\r
138 public String getColumnText(Object element, int columnIndex) {
\r
139 Issue issue = (Issue)element;
\r
140 if (columnIndex == 0)
\r
141 return issue.getDescription();
\r
146 public boolean isLabelProperty(Object element, String property) {
\r
151 public void addListener(ILabelProviderListener listener) {
\r
152 listeners.add(listener);
\r
156 public void removeListener(ILabelProviderListener listener) {
\r
157 listeners.remove(listener);
\r
161 public void dispose() {
\r