dhbw.ka.mwi.businesshorizon2.ui.initialscreen.description.DescriptionViewImpl.java Source code

Java tutorial

Introduction

Here is the source code for dhbw.ka.mwi.businesshorizon2.ui.initialscreen.description.DescriptionViewImpl.java

Source

/*******************************************************************************
 * BusinessHorizon2
 *
 * Copyright (C) 
 * 2012-2013 Christian Gahlert, Florian Stier, Kai Westerholz,
 * Timo Belz, Daniel Dengler, Katharina Huber, Christian Scherer, Julius Hacker
 * 2013-2014 Marcel Rosenberger, Mirko Gpfrich, Annika Weis, Katharina Narlock, 
 * Volker Meier
 * 
 *
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/

package dhbw.ka.mwi.businesshorizon2.ui.initialscreen.description;

import javax.annotation.PostConstruct;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import com.vaadin.event.MouseEvents.ClickEvent;
import com.vaadin.event.MouseEvents.ClickListener;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;

import dhbw.ka.mwi.businesshorizon2.ui.initialscreen.ShowProcessStepEvent.screen;
import dhbw.ka.mwi.businesshorizon2.ui.initialscreen.buttonsMiddle.ButtonsMiddlePresenter;
import dhbw.ka.mwi.businesshorizon2.ui.initialscreen.buttonsMiddle.ButtonsMiddleViewInterface;

/**
 * Dies ist die Vaadin-Implementierung der ParameterDescrition Bereicht. Sie stellt den rechten Bereich mit der Beschreibung dar.
 * 
 * @author Tobias Lindner
 * 
 */
public class DescriptionViewImpl extends VerticalLayout implements DescriptionViewInterface {

    private static final long serialVersionUID = 1L;

    private static final Logger logger = Logger.getLogger("DescriptionViewImpl.class");

    @Autowired
    private DescriptionPresenter presenter;

    private GridLayout gl;

    private Label info;

    private Label infoText0;
    private Label infoText1;

    private Label headline0;
    private Label headline1;
    private Label stochasticHeadline;
    private Label stochasticText;
    private Label deterministicHeadline;
    private Label deterministicText;
    private Label fcfHeadline;
    private Label fcfText;
    private Label ukvHeadline;
    private Label ukvText;
    private Label gkvHeadline;
    private Label gkvText;
    private Label apvHeadline;
    private Label apvText;
    private Label fteHeadline;
    private Label fteText;
    private Label waccHeadline;
    private Label waccText;

    private Label scenarioHeadline;
    private Label scenarioText;

    private Embedded iconStochastic;
    private Embedded iconDeterministic;
    private Embedded iconFCF;
    private Embedded iconGKV;
    private Embedded iconUKV;
    private Embedded iconAPV;
    private Embedded iconFTE;
    private Embedded iconWACC;

    /**
     * Dies ist der Konstruktor, der von Spring nach der Initialierung der
     * Dependencies aufgerufen wird. Er registriert sich selbst beim Presenter
     * und initialisiert die View-Komponenten. 
     * 
     * @author Tobias Lindner
     */
    @PostConstruct
    public void init() {
        presenter.setView(this);
        generateUI();
        logger.debug("Initialisierung beendet");
    }

    /**
     * Konkrete Ausprogrammierung der UI-Elemente.
     * 
     * @author Tobias Lindner
     */
    private void generateUI() {
        initializeTextsHeadlinesAndIcons();
        setWidth(95, UNITS_PERCENTAGE);
        setStyleName("projectDetailsLayout");
        info = new Label("setTexts nicht ausgefhrt");
        addComponent(info);

    }

    /**
     * Diese Methode wird vom Presenter aufgerufen und ndert die Anzeige Texte.
     * 
     * @author Tobias Lindner
     * @param screen
     *       der aktuelle Schritt
     */
    public void setTexts(screen e) {

        switch (e) {
        case METHODSELECTION:
            removeAllComponents();

            addComponent(getPrognoseMethodenInfos());
            Label gap = new Label();
            gap.setHeight(10, UNITS_PIXELS);
            addComponent(gap);
            addComponent(getEingabeMethodeInfo());
            Label gap2 = new Label();
            gap2.setHeight(10, UNITS_PIXELS);
            addComponent(getBerechnungsMethodeInfo());

            break;

        case PARAMETER:
            removeAllComponents();
            addComponent(getPrognoseMethodenInfos());
            break;

        case PERIODS:
            removeAllComponents();
            addComponent(getEingabeMethodeInfo());
            break;

        case SCENARIOS:
            removeAllComponents();
            addComponent(scenarioHeadline);
            addComponent(scenarioText);
            break;

        default:
            logger.debug("keine Case-bereinstimmung in setTexts");
            break;

        }
    }

    private VerticalLayout getPrognoseMethodenInfos() {
        VerticalLayout vl = new VerticalLayout();
        infoText0 = new Label("<h1>Prognosemethode</h1>");
        infoText0.setContentMode(Label.CONTENT_XHTML);
        infoText1 = new Label("<h2>Methode zur Parametereingabe</h2>");
        infoText1.setContentMode(Label.CONTENT_XHTML);

        gl = new GridLayout(2, 4);
        gl.setSizeFull();
        gl.setColumnExpandRatio(1, 1.0f);

        gl.addComponent(iconStochastic, 0, 0);
        gl.setComponentAlignment(iconStochastic, Alignment.MIDDLE_CENTER);
        gl.addComponent(stochasticHeadline, 1, 0);
        gl.addComponent(stochasticText, 1, 1);

        gl.addComponent(iconDeterministic, 0, 2);
        gl.setComponentAlignment(iconDeterministic, Alignment.MIDDLE_CENTER);
        gl.addComponent(deterministicHeadline, 1, 2);
        gl.addComponent(deterministicText, 1, 3);

        vl.addComponent(infoText0);
        vl.addComponent(infoText1);
        vl.addComponent(gl);

        return vl;
    }

    private VerticalLayout getEingabeMethodeInfo() {
        VerticalLayout vl = new VerticalLayout();
        headline0 = new Label("<h1>Eingabemethode</h1>");
        headline0.setContentMode(Label.CONTENT_XHTML);
        headline1 = new Label("<h2>Methode zur Berechnung des Unternehmenswertes</h2>");
        headline1.setContentMode(Label.CONTENT_XHTML);

        gl = new GridLayout(2, 6);
        gl.setSizeFull();
        gl.setColumnExpandRatio(1, 1.0f);

        gl.addComponent(iconFCF, 0, 0);
        gl.setComponentAlignment(iconFCF, Alignment.MIDDLE_CENTER);
        gl.addComponent(fcfHeadline, 1, 0);
        gl.addComponent(fcfText, 1, 1);

        //      gl.addComponent(iconUKV, 0, 2);
        //      gl.setComponentAlignment(iconUKV, Alignment.MIDDLE_CENTER);
        //      gl.addComponent(ukvHeadline, 1, 2);
        //      gl.addComponent(ukvText, 1, 3);
        //      
        //      gl.addComponent(iconGKV, 0 , 4);
        //      gl.setComponentAlignment(iconGKV, Alignment.MIDDLE_CENTER);
        //      gl.addComponent(gkvHeadline, 1, 4);
        //      gl.addComponent(gkvText, 1, 5);

        vl.addComponent(headline0);
        vl.addComponent(headline1);
        vl.addComponent(gl);

        return vl;
    }

    private VerticalLayout getBerechnungsMethodeInfo() {
        VerticalLayout vl = new VerticalLayout();
        headline0 = new Label("<h1>Berechnungsmethoden</h1>");
        headline0.setContentMode(Label.CONTENT_XHTML);
        headline1 = new Label("<h2>Methode zur Prognoseerstellung</h2>");
        headline1.setContentMode(Label.CONTENT_XHTML);

        gl = new GridLayout(2, 6);
        gl.setSizeFull();
        gl.setColumnExpandRatio(1, 1.0f);

        gl.addComponent(iconAPV, 0, 0);
        gl.setComponentAlignment(iconAPV, Alignment.MIDDLE_CENTER);
        gl.addComponent(apvHeadline, 1, 0);
        gl.addComponent(apvText, 1, 1);

        //      gl.addComponent(iconFTE, 0, 2);
        //      gl.setComponentAlignment(iconFTE, Alignment.MIDDLE_CENTER);
        //      gl.addComponent(fteHeadline, 1, 2);
        //      gl.addComponent(fteText, 1, 3);
        //      
        //      gl.addComponent(iconWACC, 0 , 4);
        //      gl.setComponentAlignment(iconWACC, Alignment.MIDDLE_CENTER);
        //      gl.addComponent(waccHeadline, 1, 4);
        //      gl.addComponent(waccText, 1, 5);

        vl.addComponent(headline0);
        vl.addComponent(headline1);
        vl.addComponent(gl);

        return vl;
    }

    /**
     * Die Methode initialisiert alle bentigten Labels, und Icons.
     * 
     * @author Tobias Lindner
     */
    private void initializeTextsHeadlinesAndIcons() {
        int anzPixelIcon = 27;

        //Stochastische Eingabe Beschreibung
        stochasticHeadline = new Label("<h3>Stochastische Eingabe</h3>");
        stochasticHeadline.setContentMode(Label.CONTENT_XHTML);
        stochasticHeadline.addStyleName("descriptionHeadline");
        stochasticText = new Label(
                "Diese Methode hat zum Ziel den zuknftigen Cashflow auf Basis der Werte aus vergangenen Methoden zu berechnen. "
                        + "Dabei werden die Werte der vergangenen Methoden von Ihnen angegeben und die potenziellen Cashflows fr die nchsten Jahre mit dem AR(p) Modell berechnet.");
        stochasticText.addStyleName("wrap");
        stochasticText.addStyleName("descriptionText");
        iconStochastic = new Embedded(null, new ThemeResource(
                "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
        iconStochastic.setWidth(anzPixelIcon, UNITS_PIXELS);
        iconStochastic.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void click(ClickEvent event) {
                if (stochasticText.isVisible()) {
                    stochasticText.setVisible(false);
                    iconStochastic.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128.png"));
                } else {
                    stochasticText.setVisible(true);
                    iconStochastic.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
                }
            }
        });

        //Deterministische Eingabe Beschreibung
        deterministicHeadline = new Label("<h3>Deterministische Eingabe</h3>");
        deterministicHeadline.setContentMode(Label.CONTENT_XHTML);
        deterministicHeadline.addStyleName("descriptionHeadline");
        deterministicText = new Label(
                "Bei der deterministischen Berechnung werden die von Ihnen geschtzten Cashflows der nchsten Perioden angegeben.");
        deterministicText.addStyleName("wrap");
        deterministicText.addStyleName("descriptionText");
        iconDeterministic = new Embedded(null, new ThemeResource(
                "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
        iconDeterministic.setWidth(anzPixelIcon, UNITS_PIXELS);
        iconDeterministic.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void click(ClickEvent event) {
                if (deterministicText.isVisible()) {
                    deterministicText.setVisible(false);
                    iconDeterministic.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128.png"));
                } else {
                    deterministicText.setVisible(true);
                    iconDeterministic.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
                }
            }
        });

        //FCF Beschreibung
        fcfHeadline = new Label("<h3>FCF</h3>");
        fcfHeadline.setContentMode(Label.CONTENT_XHTML);
        fcfHeadline.addStyleName("descriptionHeadline");
        fcfText = new Label(
                "Beim FCF Verfahren wird der freie Cash Flow aus dem operativen Cash-Flow abzglich des Saldos aus Investitionsttigkeiten errechnet.");
        fcfText.addStyleName("wrap");
        fcfText.addStyleName("descriptionText");
        iconFCF = new Embedded(null, new ThemeResource(
                "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
        iconFCF.setWidth(anzPixelIcon, UNITS_PIXELS);
        iconFCF.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void click(ClickEvent event) {
                if (fcfText.isVisible()) {
                    fcfText.setVisible(false);
                    iconFCF.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128.png"));
                } else {
                    fcfText.setVisible(true);
                    iconFCF.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
                }
            }
        });

        //UKV Beschreibung
        ukvHeadline = new Label("");//<h3>UKV</h3>");
        ukvHeadline.setContentMode(Label.CONTENT_XHTML);
        ukvHeadline.addStyleName("descriptionHeadline");
        ukvText = new Label("");
        //"Beim Umsatz-Kosten-Verfahren wird der Cashflow aus Werten aus GuV und Bilanz berechnet. Die dafr notwendigen Posten sind: "
        //+ "Umsatzerlse, Herstellkosten des Umsatzes, Kosten F&E, Verwaltungskosten, Sonstiger Aufwand, Ertrag, Ertrge aus Wertpapieren, Zinsen und hnliche Aufwendungen, Auerordentliche Ertrge & Aufwendungen, Abschreibungen, Pensionsrckstellungen");
        ukvText.addStyleName("wrap");
        ukvText.addStyleName("descriptionText");
        iconUKV = new Embedded(null, new ThemeResource(
                "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
        iconUKV.setWidth(anzPixelIcon, UNITS_PIXELS);
        iconUKV.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void click(ClickEvent event) {
                if (ukvText.isVisible()) {
                    ukvText.setVisible(false);
                    iconUKV.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128.png"));
                } else {
                    ukvText.setVisible(true);
                    iconUKV.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
                }
            }
        });

        //GKV Beschreibung
        gkvHeadline = new Label("<h3>GKV</h3>");
        gkvHeadline.setContentMode(Label.CONTENT_XHTML);
        gkvHeadline.setStyleName("descriptionHeadline");
        gkvText = new Label(
                "Beim Gesamt-Kosten-Verfahren wird der Cashflow aus Werten aus GuV und Bilanz berechnet. Die dafr notwendigen Posten sind: "
                        + "Umsatzerlse, Erhhung des Bestandes an fertigen Erzeugnissen, Verminderung des Bestandes an fertigen Erzeugnissen, Materialaufwand, Personalaufwand mit Lhne/Gehlter, "
                        + "Einstellungs-/Entlassungskosten, Pensionsrckstellungen, Sonstige Personalkosten, Abschreibungen, Sonstiger Aufwand, Ertrag, Ertrge aus Wertpapieren, Zinsen und hnliche Aufwendungen, "
                        + "Auerordentliche Ertrge, Auerordentliche Aufwendungen, Ertragssteuern, Abschreibungen, Pensionsrckstellungen");
        gkvText.addStyleName("wrap");
        gkvText.addStyleName("descriptionText");
        iconGKV = new Embedded(null, new ThemeResource(
                "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
        iconGKV.setWidth(anzPixelIcon, UNITS_PIXELS);
        iconGKV.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void click(ClickEvent event) {
                if (gkvText.isVisible()) {
                    gkvText.setVisible(false);
                    iconGKV.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128.png"));
                } else {
                    gkvText.setVisible(true);
                    iconGKV.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
                }
            }
        });

        //APV Beschreibung
        apvHeadline = new Label("<h3>APV</h3>");
        apvHeadline.setContentMode(Label.CONTENT_XHTML);
        apvHeadline.setStyleName("descriptionHeadline");
        apvText = new Label(
                "Nach dieser Methode berechnet sich der Unternehmenswert aus dem Wert des rein eigenfinanzierten Unternehmens "
                        + "zuzglich der Steuervorteile durch das verzinsliche Fremdkapital, abzglich des verzinslichen Fremdkapitals.");
        apvText.addStyleName("wrap");
        apvText.addStyleName("descriptionText");
        iconAPV = new Embedded(null, new ThemeResource(
                "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
        iconAPV.setWidth(anzPixelIcon, UNITS_PIXELS);
        iconAPV.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void click(ClickEvent event) {
                if (apvText.isVisible()) {
                    apvText.setVisible(false);
                    iconAPV.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128.png"));
                } else {
                    apvText.setVisible(true);
                    iconAPV.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
                }
            }
        });

        //FTE Beschreibung
        fteHeadline = new Label("<h3>FTE</h3>");
        fteHeadline.setContentMode(Label.CONTENT_XHTML);
        fteHeadline.addStyleName("descriptionHeadline");
        fteText = new Label(
                "Die Flow-to-Equity Methode diskontiert alle zuknftigen Cashflows auf einen Stichtag und addiert den diskontierten Restwert. "
                        + "Folglich betrachtet dieses Verfahren fr die Berechnung des Unternehmenswertes ausschlielich das Eigenkapital.");
        fteText.addStyleName("wrap");
        fteText.addStyleName("descriptionText");
        iconFTE = new Embedded(null, new ThemeResource(
                "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
        iconFTE.setWidth(anzPixelIcon, UNITS_PIXELS);
        iconFTE.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void click(ClickEvent event) {
                if (fteText.isVisible()) {
                    fteText.setVisible(false);
                    iconFTE.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128.png"));
                } else {
                    fteText.setVisible(true);
                    iconFTE.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
                }
            }
        });

        //WACC Beschreibung
        waccHeadline = new Label("<h3>WACC</h3>");
        waccHeadline.setContentMode(Label.CONTENT_XHTML);
        waccHeadline.setStyleName("descriptionHeadline");
        waccText = new Label(
                "WACC sind gewichtete Kapitalkosten. Sie werden durch das gewichtete Mittel der Eigen- und Fremdkapitalkosten berechnet, "
                        + "wobei die Fremdkapitalkosten um den Steuervorteil zu reduzieren sind: Mit Hilfe der nach WACC berechneten Kapitalkosten lsst sich der Unternehmenswert durch das Free-Cash-Flow-Verfahren (FCF) ermitteln. "
                        + "Dabei wird der Marktwert des Fremdkapitals von den diskontierten FCF-Werten subtrahiert.");
        waccText.addStyleName("wrap");
        waccText.addStyleName("descriptionText");
        iconWACC = new Embedded(null, new ThemeResource(
                "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
        iconWACC.setWidth(anzPixelIcon, UNITS_PIXELS);
        iconWACC.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void click(ClickEvent event) {
                if (waccText.isVisible()) {
                    waccText.setVisible(false);
                    iconWACC.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128.png"));
                } else {
                    waccText.setVisible(true);
                    iconWACC.setSource(new ThemeResource(
                            "./images/icons/newIcons/1421209133_circle_next_arrow_disclosure-128_rotated.png"));
                }
            }
        });

        //Szenario Beschreibung
        scenarioHeadline = new Label("<h1>Szenarien</h1>");
        scenarioHeadline.setContentMode(Label.CONTENT_XHTML);
        scenarioHeadline.setStyleName("descriptionHeadline");

        scenarioText = new Label(
                "Fr jedes Szenario knnen Sie unterschiedliche Berechnungswerte fr die Eigen- und Fremdkapitalrendite, sowie die einzelnen Steuerstze angeben. "
                        + "Bei dem Flow-to-Equity Verfahren beschrnken sich die geforderten Werte auf die Eigenkapitalkosten. Sie mssen mindestens ein Szenario in die Berechnung einbeziehen.");
        scenarioText.addStyleName("wrap");
        scenarioText.addStyleName("descriptionText");

    }

}