package fr.inria.atlanmod.collaboro.ui.wizards; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import fr.inria.atlanmod.collaboro.history.HistoryFactory; import fr.inria.atlanmod.collaboro.history.User; public class NewUsersWizardPage extends WizardPage { protected NewUsersWizardPage(String pageName) { super(pageName); } private ListViewer userList; private List<User> users = new ArrayList<User>(); Text userNameText; @Override public void createControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); composite.setLayout(layout); layout.numColumns = 1; composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Group newUser = new Group(composite, SWT.NONE); newUser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 3; newUser.setLayout(gridLayout); newUser.setText("Add new user"); Label label = new Label(newUser, SWT.NONE); label.setText("User name:"); label.setLayoutData(new GridData(GridData.BEGINNING, GridData.FILL, false, true)); userNameText = new Text(newUser, SWT.BORDER); userNameText.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); Button addButton = new Button(newUser, SWT.NONE); addButton.setLayoutData(new GridData(GridData.END, GridData.FILL, false, true)); addButton.setText("Add"); addButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { User user = HistoryFactory.eINSTANCE.createUser(); user.setId(userNameText.getText()); users.add(user); userList.refresh(); userNameText.setText(""); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); Group listGroup = new Group(composite, SWT.NONE); listGroup.setBounds(new Rectangle(0, 0, 500, 500)); listGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); GridLayout gridLayout2 = new GridLayout(); gridLayout2.numColumns = 1; listGroup.setLayout(gridLayout2); listGroup.setText("User list"); userList = new ListViewer(listGroup, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); userList.getList().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); userList.setContentProvider(new IStructuredContentProvider() { @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } @Override public void dispose() { } @Override public Object[] getElements(Object inputElement) { if (inputElement instanceof List) { List list = (List) inputElement; return list.toArray(); } return null; } }); userList.setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { if (element instanceof User) { User user = (User) element; return user.getId(); } return "User unknown"; } }); userList.setInput(users); setControl(composite); } public List<User> getUsers() { return users; } }