package net.enilink.komma.edit.ui.properties.internal.wizards; import java.util.Collection; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import net.enilink.vocab.owl.OWL; import net.enilink.komma.edit.ui.dialogs.FilteredTreeSelectionWidget; import net.enilink.komma.edit.ui.dialogs.IFilteredTreeDescriptor; import net.enilink.komma.edit.ui.provider.AdapterFactoryContentProvider; import net.enilink.komma.edit.ui.provider.AdapterFactoryLabelProvider; public class ClassSelectionPage extends WizardPage implements IFilteredTreeDescriptor, ISelectionChangedListener { public static final String PAGE_NAME = ClassSelectionPage.class.getName(); private FilteredTreeSelectionWidget widget; private ILabelProvider labelProvider; private Composite parentComposite; private Context context; protected ClassSelectionPage(Context context) { super(PAGE_NAME, PAGE_NAME, null); this.context = context; this.labelProvider = new AdapterFactoryLabelProvider(context.adapterFactory); } @Override public void createControl(Composite parent) { parentComposite = new Composite(parent, SWT.NONE); parentComposite.setLayout(new GridLayout(2, false)); widget = new FilteredTreeSelectionWidget(this); widget.createControl(parentComposite); widget.getFilteredTree().getViewer().addSelectionChangedListener(this); setControl(parentComposite); setPageComplete(false); } @Override public void setVisible(boolean visible) { super.setVisible(visible); if (visible) { widget.show(); } } @Override public boolean canFlipToNextPage() { return false; } /** IFilteredTreeDescriptor **/ @Override public ILabelProvider getLabelProvider() { return labelProvider; } @Override public ITreeContentProvider getTreeContentProvider() { return new AdapterFactoryContentProvider(context.adapterFactory) { @Override public Object[] getElements(Object object) { if (object instanceof Collection<?>) { return ((Collection<?>) object).toArray(); } return super.getElements(object); } }; } @Override public Object getTreeInput() { return context.subject.getEntityManager().find(OWL.TYPE_THING); } @Override public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) widget.getFilteredTree() .getViewer().getSelection(); context.object = selection.getFirstElement(); setPageComplete(true); } }