Make ServiceSelectorComposite's viewer configurable
diff --git a/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/ServiceSelectorComposite.java b/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/ServiceSelectorComposite.java
index 155ef61..9b8d98c 100644
--- a/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/ServiceSelectorComposite.java
+++ b/org.eclipse.userstorage.ui/src/org/eclipse/userstorage/ui/ServiceSelectorComposite.java
@@ -20,6 +20,7 @@
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
@@ -34,7 +35,7 @@
*/
public class ServiceSelectorComposite extends Composite
{
- private final ComboViewer comboViewer;
+ private final StructuredViewer viewer;
private final Link link;
@@ -66,17 +67,16 @@
}
};
- comboViewer = new ComboViewer(this, SWT.READ_ONLY);
- comboViewer.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- comboViewer.setContentProvider(contentProvider);
- comboViewer.setInput(IStorageService.Registry.INSTANCE);
- comboViewer.addSelectionChangedListener(new ISelectionChangedListener()
+ viewer = createViewer(this);
+ viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ viewer.setContentProvider(contentProvider);
+ viewer.setInput(IStorageService.Registry.INSTANCE);
+ viewer.addSelectionChangedListener(new ISelectionChangedListener()
{
@Override
public void selectionChanged(SelectionChangedEvent event)
{
- IStructuredSelection selection = (IStructuredSelection)event.getSelection();
- selectedService = (IStorageService)selection.getFirstElement();
+ selectedService = getViewerSelection();
}
});
@@ -87,8 +87,7 @@
@Override
public void widgetSelected(SelectionEvent e)
{
- IStructuredSelection selection = (IStructuredSelection)comboViewer.getSelection();
- IStorageService service = (IStorageService)selection.getFirstElement();
+ IStorageService service = getViewerSelection();
PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getShell(), ServicesPreferencePage.ID, null, service);
dialog.open();
@@ -106,21 +105,21 @@
if (service != selectedService)
{
selectedService = service;
- comboViewer.setSelection(new StructuredSelection(service));
+ viewer.setSelection(new StructuredSelection(service));
}
}
@Override
public boolean setFocus()
{
- return comboViewer.getControl().setFocus();
+ return viewer.getControl().setFocus();
}
@Override
public void setEnabled(boolean enabled)
{
super.setEnabled(enabled);
- comboViewer.getControl().setEnabled(enabled);
+ viewer.getControl().setEnabled(enabled);
link.setEnabled(enabled);
}
@@ -133,4 +132,15 @@
{
// Do nothing.
}
+
+ protected StructuredViewer createViewer(Composite parent)
+ {
+ return new ComboViewer(parent, SWT.READ_ONLY);
+ }
+
+ private IStorageService getViewerSelection()
+ {
+ IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
+ return (IStorageService)selection.getFirstElement();
+ }
}