ch.elexis.core.ui.preferences.AnwenderPref.java Source code

Java tutorial

Introduction

Here is the source code for ch.elexis.core.ui.preferences.AnwenderPref.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2009, 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.preferences;

import java.util.Hashtable;
import java.util.List;

import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.forms.widgets.Form;
import org.eclipse.ui.forms.widgets.FormToolkit;

import ch.elexis.admin.AccessControlDefaults;
import ch.elexis.core.constants.Preferences;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.ui.Hub;
import ch.elexis.core.ui.UiDesk;
import ch.elexis.core.ui.preferences.inputs.PrefAccessDenied;
import ch.elexis.core.ui.util.LabeledInputField;
import ch.elexis.core.ui.util.LabeledInputField.InputData;
import ch.elexis.core.ui.util.LabeledInputField.InputData.Typ;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.data.Anwender;
import ch.elexis.data.Mandant;
import ch.elexis.data.Query;

public class AnwenderPref extends PreferencePage implements IWorkbenchPreferencePage {
    private static final String EXT_INFO = "ExtInfo"; //$NON-NLS-1$

    public static final String ID = "ch.elexis.anwenderprefs"; //$NON-NLS-1$

    private LabeledInputField.AutoForm lfa;
    private InputData[] def;

    private Hashtable<String, Anwender> hAnwender = new Hashtable<String, Anwender>();

    @Override
    protected Control createContents(Composite parent) {
        if (CoreHub.acl.request(AccessControlDefaults.ACL_USERS)) {
            FormToolkit tk = new FormToolkit(UiDesk.getDisplay());
            Form form = tk.createForm(parent);
            Composite body = form.getBody();
            body.setLayout(new GridLayout(1, false));
            Combo cbAnwender = new Combo(body, SWT.DROP_DOWN | SWT.READ_ONLY);
            Query<Anwender> qbe = new Query<Anwender>(Anwender.class);
            List<Anwender> list = qbe.execute();
            for (Anwender m : list) {
                cbAnwender.add(m.getLabel());
                hAnwender.put(m.getLabel(), m);
            }
            cbAnwender.addSelectionListener(new SelectionAdapter() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    Combo source = (Combo) e.getSource();
                    String m = (source.getItem(source.getSelectionIndex()));
                    Anwender anw = hAnwender.get(m);
                    lfa.reload(anw);
                }

            });
            GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
            // gd.horizontalSpan=2;
            cbAnwender.setLayoutData(gd);
            tk.adapt(cbAnwender);
            lfa = new LabeledInputField.AutoForm(body, def);
            lfa.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
            tk.paintBordersFor(body);
            return form;
        } else {
            return new PrefAccessDenied(parent);
        }
    }

    public void init(IWorkbench workbench) {
        List<Mandant> ml = Hub.getMandantenList();
        String[] mands = new String[ml.size()];
        for (int i = 0; i < mands.length; i++) {
            mands[i] = ml.get(i).getLabel();
        }
        String grp = CoreHub.globalCfg.get(Preferences.ACC_GROUPS, "Admin"); //$NON-NLS-1$
        def = new InputData[] { new InputData(Messages.AnwenderPref_kuerzel, "Label", Typ.STRING, null), //$NON-NLS-1$
                new InputData(Messages.AnwenderPref_passwort, EXT_INFO, Typ.STRING, "UsrPwd"), //$NON-NLS-1$
                new InputData(Messages.AnwenderPref_gruppe, EXT_INFO, "Groups", grp.split(",")), //$NON-NLS-1$ //$NON-NLS-2$
                new InputData(Messages.AnwenderPref_fuerMandant, Messages.AnwenderPref_12, "Mandant", mands) //$NON-NLS-1$
        };
    }

}