package org.projectusus.ui.dependencygraph.common; import static java.util.Arrays.sort; import java.util.Comparator; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; public class GraphLayoutComboViewer { private static final String LAYOUT_LABEL = "Layout:"; public GraphLayoutComboViewer( Composite parent, ISelectionChangedListener listener ) { Composite composite = new Composite( parent, SWT.NONE ); composite.setLayout( new FillLayout() ); createLabel( parent, LAYOUT_LABEL ); ComboViewer comboViewer = new ComboViewer( parent, SWT.READ_ONLY ); comboViewer.setContentProvider( new ArrayContentProvider() ); comboViewer.setLabelProvider( new LabelProvider() ); comboViewer.setInput( allLayoutsSortedByTitle() ); comboViewer.setSelection( new StructuredSelection( GraphLayout.getDefault() ) ); comboViewer.addSelectionChangedListener( listener ); } private GraphLayout[] allLayoutsSortedByTitle() { GraphLayout[] layouts = GraphLayout.values(); sort( layouts, byTitle() ); return layouts; } private Comparator<GraphLayout> byTitle() { return new Comparator<GraphLayout>() { public int compare( GraphLayout first, GraphLayout second ) { return first.title().compareTo( second.title() ); } }; } private Label createLabel( Composite parent, String labelText ) { Label label = new Label( parent, SWT.NONE ); label.setText( labelText ); return label; } }