1 package com.proalpha.pds.ui;
3 import java.util.Collections;
5 import java.util.concurrent.CopyOnWriteArrayList;
7 import org.eclipse.core.runtime.FileLocator;
8 import org.eclipse.core.runtime.Path;
9 import org.eclipse.core.runtime.Platform;
10 import org.eclipse.jface.dialogs.IMessageProvider;
11 import org.eclipse.jface.dialogs.TitleAreaDialog;
12 import org.eclipse.jface.resource.ImageDescriptor;
13 import org.eclipse.jface.viewers.ILabelProvider;
14 import org.eclipse.jface.viewers.ILabelProviderListener;
15 import org.eclipse.jface.viewers.ITreeContentProvider;
16 import org.eclipse.jface.viewers.TreeViewer;
17 import org.eclipse.jface.viewers.Viewer;
18 import org.eclipse.swt.SWT;
19 import org.eclipse.swt.graphics.Image;
20 import org.eclipse.swt.layout.GridData;
21 import org.eclipse.swt.layout.GridLayout;
22 import org.eclipse.swt.widgets.Composite;
23 import org.eclipse.swt.widgets.Control;
24 import org.eclipse.swt.widgets.Shell;
25 import org.eclipse.swt.widgets.TreeItem;
27 import com.proalpha.pds.paconnector.PaProject;
32 private List<PaProject> availableProjects =
new CopyOnWriteArrayList<>();
33 private TreeViewer treeViewer;
34 public static final Image icon = ImageDescriptor.createFromURL(FileLocator
35 .find(Platform.getBundle(
Activator.PLUGIN_ID),
new Path(
"icons/selectproject.gif"), Collections.emptyMap()))
41 selectedProject =
null;
46 return selectedProject;
50 protected Control createDialogArea(Composite parent) {
51 Composite area = (Composite) super.createDialogArea(parent);
52 Composite container =
new Composite(area, SWT.NONE);
53 container.setLayoutData(
new GridData(SWT.FILL, SWT.FILL,
true,
true));
54 GridLayout layout =
new GridLayout(1,
false);
55 container.setLayout(layout);
57 treeViewer =
new TreeViewer(container, SWT.BORDER);
58 GridData gridData =
new GridData(SWT.FILL, SWT.FILL,
true,
true, 1, 1);
59 gridData.widthHint = 220;
60 treeViewer.getTree().setLayoutData(gridData);
62 treeViewer.setLabelProvider(
new ProjectLabelProvider());
63 treeViewer.setInput(availableProjects);
68 public void create() {
70 setTitle(
"Project selection");
71 setMessage(
"Select your proALPHA Project", IMessageProvider.INFORMATION);
75 protected boolean isResizable() {
80 protected void okPressed() {
81 TreeItem[] items = treeViewer.getTree().getSelection();
82 if (items !=
null && items.length > 0)
83 this.selectedProject = (
PaProject) items[0].getData();
89 public void inputChanged(Viewer v, Object oldInput, Object newInput) {
90 List<PaProject> paProjects = com.proalpha.pds.paconnector.Activator.getDefault().getProjectManager()
92 availableProjects.clear();
93 paProjects.forEach(paProject -> {
94 if (paProject.isAvailable() && paProject.getOeProject().getProject().isOpen()) {
95 availableProjects.add(paProject);
101 public void dispose() {
106 public Object[] getElements(Object inputElement) {
107 if (inputElement instanceof List) {
108 return ((List<?>) inputElement).toArray();
110 return new Object[0];
114 public Object[] getChildren(Object parentElement) {
115 return new Object[0];
119 public Object getParent(Object element) {
124 public boolean hasChildren(Object element) {
130 private class ProjectLabelProvider
implements ILabelProvider {
131 public Image getImage(
final Object element) {
135 public String getText(
final Object element) {
138 return paProject.getName().substring(2);
144 public void addListener(ILabelProviderListener arg0) {
148 public void dispose() {
152 public boolean isLabelProperty(Object arg0, String arg1) {
157 public void removeListener(ILabelProviderListener arg0) {