/******************************************************************************* * Copyright (c) 2005-2011, G. Weirich and Elexis * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * G. Weirich - initial implementation * * *******************************************************************************/ package ch.elexis.core.ui.dialogs; import java.util.List; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.data.util.Extensions; import ch.elexis.core.ui.ILoginNews; import ch.elexis.core.ui.constants.ExtensionPointConstantsUi; import ch.elexis.core.ui.util.SWTHelper; import ch.elexis.data.Anwender; import ch.elexis.data.Query; import ch.rgw.tools.ExHandler; public class LoginDialog extends TitleAreaDialog { Text usr, pwd; boolean hasUsers; ButtonEnabler be = new ButtonEnabler(); public LoginDialog(Shell parentShell){ super(parentShell); Query<Anwender> qbe = new Query<Anwender>(Anwender.class); List<Anwender> list = qbe.execute(); hasUsers = (list.size() > 1); } @Override protected Control createDialogArea(Composite parent){ Composite ret = new Composite(parent, SWT.NONE); ret.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true)); ret.setLayout(new GridLayout(2, false)); Label lu = new Label(ret, SWT.NONE); lu.setText(Messages.LoginDialog_0); usr = new Text(ret, SWT.BORDER); usr.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); new Label(ret, SWT.NONE).setText(Messages.LoginDialog_1); pwd = new Text(ret, SWT.BORDER | SWT.PASSWORD); pwd.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); if (hasUsers == false) { usr.setText("Administrator"); //$NON-NLS-1$ pwd.setText("admin"); //$NON-NLS-1$ } @SuppressWarnings("unchecked") List<ILoginNews> newsModules = Extensions.getClasses(ExtensionPointConstantsUi.LOGIN_NEWS, "class"); if (newsModules.size() > 0) { Composite cNews = new Composite(ret, SWT.NONE); cNews.setLayoutData(SWTHelper.getFillGridData(2, true, 1, true)); cNews.setLayout(new GridLayout()); for (ILoginNews lm : newsModules) { try { Composite comp = lm.getComposite(cNews); comp.setLayoutData(SWTHelper.getFillGridData()); } catch (Exception ex) { // Note: This is NOT a fatal error. It just means, that the Newsmodule could not // load. Maybe we are offline. ExHandler.handle(ex); } } } return ret; } @Override protected void okPressed(){ if (Anwender.login(usr.getText(), pwd.getText()) == true) { super.okPressed(); } else { setMessage(Messages.LoginDialog_4, IMessageProvider.ERROR); // getButton(IDialogConstants.OK_ID).setEnabled(false); } } @Override protected void cancelPressed(){ CoreHub.actUser = null; CoreHub.actMandant = null; super.cancelPressed(); } @Override public void create(){ super.create(); getButton(IDialogConstants.OK_ID).setText(Messages.LoginDialog_login); getButton(IDialogConstants.CANCEL_ID).setText(Messages.LoginDialog_terminate); // getButton(IDialogConstants.OK_ID).setEnabled(false); } class ButtonEnabler implements ModifyListener { @Override public void modifyText(ModifyEvent e){ if (usr.getText().length() == 0 || pwd.getText().length() == 0) { // getButton(IDialogConstants.OK_ID).setEnabled(false); } else { // getButton(IDialogConstants.OK_ID).setEnabled(true); } } } }