package org.eclipse.emf.emfstore.client.ui.dialogs.login; import org.eclipse.emf.emfstore.client.model.ServerInfo; import org.eclipse.emf.emfstore.client.model.Usersession; import org.eclipse.emf.emfstore.client.model.WorkspaceManager; import org.eclipse.emf.emfstore.client.model.connectionmanager.AbstractSessionProvider; import org.eclipse.emf.emfstore.server.exceptions.AccessControlException; import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.widgets.Display; /** * * @author wesendon * */ public class BasicUISessionProvider extends AbstractSessionProvider { /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.client.model.connectionmanager.SessionProvider#provideUsersession(org.eclipse.emf.emfstore.client.model.ServerInfo) */ @Override public Usersession provideUsersession(ServerInfo serverInfo) throws EmfStoreException { if (serverInfo == null) { // try to retrieve a server info by showing a server info selection dialog ServerInfoSelectionDialog dialog = new ServerInfoSelectionDialog(Display.getCurrent().getActiveShell(), WorkspaceManager.getInstance().getCurrentWorkspace().getServerInfos()); if (dialog.open() == Dialog.OK) { serverInfo = dialog.getResult(); } } if (serverInfo == null) { throw new AccessControlException("Couldn't determine which server to connect."); } // TODO Review this // if (serverInfo.getLastUsersession() != null && serverInfo.getLastUsersession().isLoggedIn()) { // return serverInfo.getLastUsersession(); // } return new LoginDialogController().login(serverInfo); } @Override public void login(Usersession usersession) throws EmfStoreException { if (usersession != null) { new LoginDialogController().login(usersession); } } }