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

Java tutorial

Introduction

Here is the source code for ch.elexis.core.ui.preferences.SidebarPreferences.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 org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.ListEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import ch.elexis.core.constants.Preferences;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.ui.constants.ExtensionPointConstantsUi;
import ch.elexis.core.ui.util.SWTHelper;
import ch.rgw.tools.StringTool;

public class SidebarPreferences extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
    BooleanFieldEditor sb;

    public SidebarPreferences() {
        super(GRID);
        setPreferenceStore(new SettingsPreferenceStore(CoreHub.localCfg));
        setDescription(Messages.SidebarPreferences_DefinitisonStarterBar);
        // noDefaultAndApplyButton();
    }

    public SidebarPreferences(String title, int style) {
        super(title, style);
    }

    @Override
    protected void createFieldEditors() {
        sb = new BooleanFieldEditor(Preferences.SHOWSIDEBAR, Messages.SidebarPreferences_ShowStartBar,
                getFieldEditorParent());

        addField(sb);
        addField(new BooleanFieldEditor(Preferences.SHOWPERSPECTIVESELECTOR,
                Messages.SidebarPreferences_SchowPerspectives, getFieldEditorParent()));
        addField(new BooleanFieldEditor(Preferences.SHOWTOOLBARITEMS,
                Messages.SidebarPreferences_PerspectivesInToolbar, getFieldEditorParent()));
        addField(new Perspektivenliste(Preferences.SIDEBAR, Messages.SidebarPreferences_Perspectives,
                getFieldEditorParent()));
    }

    public void init(IWorkbench workbench) {
        // TODO Automatisch erstellter Methoden-Stub

    }

    /*
     * @Override public boolean performOk() { IWorkbenchPage
     * page=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); try { Starter
     * starter=(Starter)page.showView(Starter.ID); if(sb.getBooleanValue()==false){
     * page.hideView(starter); } } catch (PartInitException e) { // TODO Auto-generated catch block
     * e.printStackTrace(); } return super.performOk(); }
     */
}

class Perspektivenliste extends ListEditor {
    public Perspektivenliste(String name, String input, Composite parent) {
        super(name, input, parent);
    }

    @Override
    protected String createList(String[] items) {
        return StringTool.join(items, ","); //$NON-NLS-1$
    }

    @Override
    protected String getNewInputObject() {
        PerspektivenAuswahl pa = new PerspektivenAuswahl(getShell());
        if (pa.open() == Dialog.OK) {
            return pa.selection;
        }
        return null;
    }

    @Override
    protected String[] parseString(String stringList) {
        return stringList.split(","); //$NON-NLS-1$
    }

}

class PerspektivenAuswahl extends Dialog {
    String selection;
    private List list;

    protected PerspektivenAuswahl(Shell parentShell) {
        super(parentShell);

    }

    @Override
    protected Control createDialogArea(Composite parent) {
        list = new List(parent, SWT.BORDER | SWT.SINGLE);
        list.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
        IExtensionRegistry exr = Platform.getExtensionRegistry();
        IExtensionPoint exp = exr.getExtensionPoint(ExtensionPointConstantsUi.SIDEBAR);
        if (exp != null) {
            IExtension[] extensions = exp.getExtensions();
            for (IExtension ex : extensions) {
                IConfigurationElement[] elems = ex.getConfigurationElements();
                for (IConfigurationElement el : elems) {
                    String name = el.getAttribute("name"); //$NON-NLS-1$
                    String ID = el.getAttribute("ID"); //$NON-NLS-1$
                    list.add(name + ":" + ID); //$NON-NLS-1$
                }
            }
        }

        return list;
    }

    @Override
    public void create() {
        super.create();
        getShell().setText(Messages.SidebarPreferences_AvailablePerspectives);
    }

    @Override
    protected void okPressed() {
        selection = StringTool.join(list.getSelection(), ","); //$NON-NLS-1$
        super.okPressed();

    };
}