ch.unibe.iam.scg.archie.ui.views.StatisticsView.java Source code

Java tutorial

Introduction

Here is the source code for ch.unibe.iam.scg.archie.ui.views.StatisticsView.java

Source

/*******************************************************************************
 * Copyright (c) 2008 Dennis Schenk, Peter Siska.
 * 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:
 *     Dennis Schenk - initial implementation
 *     Peter Siska    - initial implementation
 *     Gerry Weirich - modifications for API Changes in 2.1 (ElexisEventDispatcher)
 *******************************************************************************/
package ch.unibe.iam.scg.archie.ui.views;

import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.part.ViewPart;

import ch.elexis.core.data.events.ElexisEvent;
import ch.elexis.core.data.events.ElexisEventDispatcher;
import ch.elexis.core.ui.events.ElexisUiEventListenerImpl;
import ch.elexis.data.Anwender;
import ch.unibe.iam.scg.archie.ArchieActivator;
import ch.unibe.iam.scg.archie.acl.ArchieACL;
import ch.unibe.iam.scg.archie.actions.ChartWizardAction;
import ch.unibe.iam.scg.archie.actions.ExportAction;
import ch.unibe.iam.scg.archie.i18n.Messages;
import ch.unibe.iam.scg.archie.ui.GraphicalMessage;
import ch.unibe.iam.scg.archie.ui.ResultPanel;

/**
 * <p>
 * This class contains all methods needed to display the output created by any
 * query.
 * </p>
 * 
 * $Id: StatisticsView.java 774 2010-01-29 05:47:10Z gerry.weirich $
 * 
 * @author Peter Siska
 * @author Dennis Schenk
 * @version $Rev: 774 $
 */
public class StatisticsView extends ViewPart {

    /**
     * ID of this view.
     */
    public static final String ID = ArchieActivator.PLUGIN_ID + ".ui.views.StatisticsView";

    private Composite container;

    private ResultPanel resultPanel;

    private GraphicalMessage message;

    private ExportAction exportAction;

    private ChartWizardAction chartWizardAction;

    private ElexisUiEventListenerImpl eeli_user = new ElexisUiEventListenerImpl(Anwender.class,
            ElexisEvent.EVENT_USER_CHANGED) {

        @Override
        public void runInUi(ElexisEvent ev) {
            clean();
            initialize();
        }

    };

    /**
     * Public constructor.
     */
    public StatisticsView() {
    }

    /**
     * This is a callback that will allow us to create the viewer and initialize
     * it.
     */
    @Override
    public void createPartControl(Composite parent) {
        this.container = parent;

        // add and contribute actions for this view
        this.addActions();

        // initialize view contents
        this.initialize();
        ElexisEventDispatcher.getInstance().addListeners(eeli_user);
    }

    @Override
    public void dispose() {
        ElexisEventDispatcher.getInstance().removeListeners(eeli_user);
        super.dispose();
    }

    /**
     * Initialized the controls of this view. This method takes the ACL into
     * account.
     */
    private void initialize() {
        // remove margins and vertical spacing
        GridLayout layout = new GridLayout();
        layout.verticalSpacing = 0;
        layout.marginHeight = 0;
        layout.marginWidth = 0;

        // set layout
        this.container.setLayout(layout);

        // set initial message based on the ACL
        if (ArchieACL.userHasAccess()) {
            this.message = new GraphicalMessage(this.container,
                    ArchieActivator.getImage(ArchieActivator.IMG_WARNING), Messages.NO_PLUGIN_SELECTED);
        } else {
            this.message = new GraphicalMessage(this.container, ArchieActivator.getImage(ArchieActivator.IMG_ERROR),
                    Messages.ACL_ACCESS_DENIED);
            this.setActionsEnabled(false);
        }

        // layout container
        this.container.layout();
    }

    /**
     * Add actions to this view.
     */
    private void addActions() {
        this.exportAction = new ExportAction(this);
        this.chartWizardAction = new ChartWizardAction();

        IToolBarManager manager = this.getViewSite().getActionBars().getToolBarManager();
        manager.add(this.exportAction);
        manager.add(this.chartWizardAction);
    }

    /**
     * Removes the initial message which is being shown before any statistics
     * have been run.
     */
    public void removeInitializeMessage() {
        if (this.message != null) {
            this.message.dispose();
        }
    }

    /**
     * Passing the focus request to the viewer's control.
     */
    @Override
    public void setFocus() {
        // nothing ?
    }

    /**
     * Returns the container of this view. This composite is used to populate
     * the view with other components.
     * 
     * @return The composite container of this view.
     */
    public Composite getParent() {
        return this.container;
    }

    /**
     * Cleans the main result view from all active components.
     */
    public void clean() {
        if (this.container != null && !this.container.isDisposed()) {
            for (Control child : this.container.getChildren()) {
                child.dispose();
            }
        }
    }

    /**
     * Sets the result panel for this view.
     * 
     * @param composite
     *            Composite containing the results of a query.
     */
    public void setResultComposite(ResultPanel composite) {
        this.resultPanel = composite;
    }

    /**
     * 
     * @return ResultPanel
     */
    public ResultPanel getResultPanel() {
        return this.resultPanel;
    }

    /**
     * Sets the enabled state for actions in this view.
     * 
     * @param enabled
     *            True if actions should be enabled, false for disabled.
     * @see String org.eclipse.jface.action.IAction.ENABLED
     */
    public void setActionsEnabled(boolean enabled) {
        this.exportAction.setEnabled(enabled);
        this.chartWizardAction.setEnabled(enabled);
    }

}