package net.enilink.komma.edit.ui.wizards;
import java.util.List;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import net.enilink.komma.core.URI;
public class ObjectNamespaceSelectionPage extends WizardPage {
protected ILabelProvider labelProvider;
protected IContentProvider contentProvider;
protected Object uris;
protected ListViewer listViewer;
protected Object[] types;
public ObjectNamespaceSelectionPage(String name,List<URI> nsUris,ILabelProvider labelProvider){
this(name,nsUris,labelProvider,new ArrayContentProvider());
}
public ObjectNamespaceSelectionPage(String name,Object nsUris,ILabelProvider labelProvider,IContentProvider contentProvider){
super(name);
this.uris = nsUris;
this.labelProvider = labelProvider;
this.contentProvider = contentProvider;
setTitle("New resource");
setDescription("Select resource namespace");
setPageComplete(false);
}
@Override
public void createControl(Composite parent) {
Composite composite = new Composite(parent,SWT.NONE);
composite.setLayout(new GridLayout(1,false));
org.eclipse.swt.widgets.List list = new org.eclipse.swt.widgets.List(composite,SWT.BORDER);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
list.setLayoutData(gridData);
listViewer = new ListViewer(list);
listViewer.setLabelProvider(labelProvider);
listViewer.setContentProvider(contentProvider);
listViewer.setInput(uris);
listViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent e) {
IStructuredSelection selection = (IStructuredSelection) e
.getSelection();
types = selection.toArray();
setPageComplete(!selection.isEmpty());
}
});
selectTypes();
setControl(composite);
}
protected Object[] getTypes() {
return types;
}
protected void setTypes(Object[] types) {
this.types = types;
selectTypes();
}
private void selectTypes() {
if (types != null && listViewer != null) {
listViewer.setSelection(new StructuredSelection(types), true);
}
}
}