commit 664d0a002bd0adf7c55fec323e7533448a1d80bc
Author: Andreas Kohlbecker <a.kohlbecker@bgbm.org>
Date:   Wed Mar 29 11:34:48 2017 +0200

    ref #6169 visualization of RegistrationWorkingSets in the workflow view

diff --git a/src/main/java/eu/etaxonomy/cdm/mock/RegistrationStatus.java b/src/main/java/eu/etaxonomy/cdm/mock/RegistrationStatus.java
index 7d32ea4d..ed6e6f17 100644
--- a/src/main/java/eu/etaxonomy/cdm/mock/RegistrationStatus.java
+++ b/src/main/java/eu/etaxonomy/cdm/mock/RegistrationStatus.java
@@ -15,4 +15,5 @@ public enum RegistrationStatus {
     READY, //The record has passed the validation by the curator and is ready for publication.
     PUBLISHED, //The name or typification has finally been published.
     REJECTED //The registration has been rejected, the process is aborted and the record is preserved.
+
 }
\ No newline at end of file
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/AccordionWorkflow.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/AccordionWorkflow.java
new file mode 100644
index 00000000..24f47c96
--- /dev/null
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/AccordionWorkflow.java
@@ -0,0 +1,39 @@
+/**
+* Copyright (C) 2017 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.vaadin.component.registration;
+
+import com.vaadin.ui.Accordion;
+import com.vaadin.ui.Component;
+
+/**
+ * @author a.kohlbecker
+ * @since Mar 27, 2017
+ *
+ */
+public class AccordionWorkflow extends Accordion {
+
+    private static final long serialVersionUID = -3279853764419918649L;
+
+    public AccordionWorkflow() {
+        super();
+        init();
+    }
+
+    public AccordionWorkflow(Component... components) {
+        super(components);
+        init();
+    }
+
+    /**
+     *
+     */
+    private void init() {
+        setTabCaptionsAsHtml(true);
+    }
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java
index 9c220d46..fa997391 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java
@@ -79,7 +79,7 @@ public class RegistrationItem extends GridLayout {
     public void init() {
 
         setWidth(100, Unit.PERCENTAGE);
-        addStyleName("registration-item");
+        addStyleName("registration-list-item");
 
         typeStateLabel.setStyleName(STYLE_LABEL_NOWRAP);
         addComponent(typeStateLabel, 0, 0);
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowBulletItem.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowBulletItem.java
new file mode 100644
index 00000000..e3622ba8
--- /dev/null
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowBulletItem.java
@@ -0,0 +1,40 @@
+/**
+* Copyright (C) 2017 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.vaadin.component.registration;
+
+import com.vaadin.ui.Button.ClickListener;
+
+import eu.etaxonomy.cdm.vaadin.design.registration.WorkflowItemDesign;
+
+/**
+ * @author a.kohlbecker
+ * @since Mar 10, 2017
+ *
+ */
+public class WorkflowBulletItem extends WorkflowItemDesign {
+
+    private static final long serialVersionUID = -6825656185698773467L;
+
+    /**
+     *
+     */
+    public WorkflowBulletItem(int stepIndex, String caption, ClickListener listener) {
+        this.stepIndex.setCaption(Integer.toString(stepIndex));
+        this.caption.setValue(caption);
+        if(listener != null){
+            this.stepIndex.addClickListener(listener);
+        }
+    }
+
+    @Override
+    public void setCaption(String text){
+        this.caption.setValue(text);
+    }
+
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowItem.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowItem.java
deleted file mode 100644
index 8371d367..00000000
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowItem.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
-* Copyright (C) 2017 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.cdm.vaadin.component.registration;
-
-import com.vaadin.ui.Button.ClickListener;
-
-import eu.etaxonomy.cdm.vaadin.design.registration.WorkflowItemDesign;
-
-/**
- * @author a.kohlbecker
- * @since Mar 10, 2017
- *
- */
-public class WorkflowItem extends WorkflowItemDesign {
-
-    private static final long serialVersionUID = -6825656185698773467L;
-
-    /**
-     *
-     */
-    public WorkflowItem(int stepIndex, String caption, ClickListener listener) {
-        this.stepIndex.setCaption(Integer.toString(stepIndex));
-        this.caption.setValue(caption);
-        if(listener != null){
-            this.stepIndex.addClickListener(listener);
-        }
-    }
-
-    @Override
-    public void setCaption(String text){
-        this.caption.setValue(text);
-    }
-
-}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowSteps.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowSteps.java
index 3df23d47..b6b46b50 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowSteps.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/WorkflowSteps.java
@@ -25,12 +25,12 @@ public class WorkflowSteps extends WorkflowStepsDesign {
         // TODO Auto-generated constructor stub
     }
 
-    public void appendWorkflowItem(WorkflowItem item){
+    public void appendWorkflowItem(WorkflowBulletItem item){
         this.steps.addComponent(item);
     }
 
     public void appendNewWorkflowItem(int stepIndex, String caption, ClickListener listener){
-        this.steps.addComponent(new WorkflowItem(stepIndex, caption, listener));
+        this.steps.addComponent(new WorkflowBulletItem(stepIndex, caption, listener));
     }
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java
index 40c4848b..9190b8a6 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java
@@ -14,6 +14,7 @@ import java.util.List;
 import java.util.Set;
 
 import eu.etaxonomy.cdm.mock.Registration;
+import eu.etaxonomy.cdm.mock.RegistrationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.vaadin.presenter.registration.RegistrationDTO;
 import eu.etaxonomy.cdm.vaadin.presenter.registration.RegistrationValidationException;
@@ -106,6 +107,37 @@ public class RegistrationWorkingSet {
         return regs;
     }
 
+    /**
+     * Calculates the total count of messages in the registrations contained
+     * in the working set.
+     *
+     * @return
+     */
+    public int messagesCount() {
+        int messagesCount = 0;
+        for(RegistrationDTO dto : getRegistrationDTOs()) {
+            messagesCount = messagesCount + dto.getMessages().size();
+        }
+        return messagesCount;
+    }
+
+    /**
+     * Finds the lowest status in the registrations contained
+     * in the working set.
+     *
+     * @return
+     */
+    public RegistrationStatus lowestStatus() {
+        RegistrationStatus status = RegistrationStatus.REJECTED;
+        for(RegistrationDTO dto : getRegistrationDTOs()) {
+            if(dto.getStatus().compareTo(status) < 0){
+                status = dto.getStatus();
+            }
+        }
+        return status;
+    }
+
+
     /**
      * @return the registrations
      */
@@ -127,7 +159,4 @@ public class RegistrationWorkingSet {
         return citation;
     }
 
-
-
-
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/WorkflowStep.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/WorkflowStep.java
new file mode 100644
index 00000000..b59fe338
--- /dev/null
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/WorkflowStep.java
@@ -0,0 +1,76 @@
+/**
+* Copyright (C) 2017 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.vaadin.model.registration;
+
+import org.apache.commons.lang.StringEscapeUtils;
+
+import eu.etaxonomy.cdm.mock.RegistrationStatus;
+
+/**
+ * @author a.kohlbecker
+ * @since Mar 28, 2017
+ *
+ */
+public enum WorkflowStep {
+
+    PUBLICATION_DETAILS(0, "Publication"),
+    NAMES_N_TYPES(1, "Names & Types"),
+    CURATION(2, "Curation"),
+    AWAITING_PUBLICATION(3, "Awaiting publication"),
+    PUBLISHED(3, "Awaiting publication"),
+    REJECTED(3, "Rejected");
+
+    private String representation;
+    private int stepIndex = -1;
+
+    private WorkflowStep(int stepIndex, String representation){
+        this.stepIndex = stepIndex;
+        this.representation = representation;
+    }
+
+    /**
+     * @return the representation
+     */
+    public String getRepresentation() {
+        return representation;
+    }
+
+    /**
+     * @return the stepIndex
+     */
+    public int getStepIndex() {
+        return stepIndex;
+    }
+
+    public String getHtml(){
+        return StringEscapeUtils.escapeHtml(getRepresentation());
+    }
+
+    public static WorkflowStep from(RegistrationStatus status, boolean citationDetailsReady) {
+        if(!citationDetailsReady){
+            return PUBLICATION_DETAILS;
+        } else {
+            switch(status) {
+            case CURATION:
+                return CURATION;
+            case PUBLISHED:
+                return PUBLISHED;
+            case REJECTED:
+                return REJECTED;
+            case PREPARATION:
+                return PUBLICATION_DETAILS;
+            case READY:
+                return AWAITING_PUBLICATION;
+            default:
+                /* this should never happen */
+                return null;
+            }
+        }
+    }
+}
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/presenter/registration/RegistrationWorkflowPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/presenter/registration/RegistrationWorkflowPresenter.java
index b0000713..077275c3 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/presenter/registration/RegistrationWorkflowPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/presenter/registration/RegistrationWorkflowPresenter.java
@@ -75,10 +75,8 @@ public class RegistrationWorkflowPresenter extends AbstractPresenter<Registratio
             getView().setHeaderText("Registration for " + workingset.getCitation());
         }
         if(workingset != null){
-            // getView().getTitle().setValue("Workflow for a " + registrationType().name());
-            for(Registration reg : workingset.getRegistrations()){
-                getView().makeWorflow(RegistrationType.from(reg));
-            }
+            getView().setWorkingset(workingset);
+            //TODO add Blocking registrations to view
         }
     }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/ui/RegistrationUI.java b/src/main/java/eu/etaxonomy/cdm/vaadin/ui/RegistrationUI.java
index 2e423787..b87df467 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/ui/RegistrationUI.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/ui/RegistrationUI.java
@@ -90,10 +90,12 @@ public class RegistrationUI extends UI {
         //navigate to initial view
         eventBus.publishEvent(new NavigationEvent(DashBoardView.NAME));
 
-        //TODO the branding should be read from a properties file in .cdmLibrary/{instance-name}/cdm-vaadin.properties
-        //  See CdmUtils for appropriate methods to access this folder
         String brand = "phycobank";
-
+        //TODO create annotation:
+        // @Styles(files={""}, branding="brand")
+        //
+        // the branding can either be specified or can be read from a properties file in .cdmLibrary/{instance-name}/cdm-vaadin.properties
+        //  See CdmUtils for appropriate methods to access this folder
         // the 'vaadin://' protocol refers to the VAADIN folder
         Resource registryCssFile = new ExternalResource("vaadin://branding/" + brand + "/css/branding.css");
         Page.getCurrent().getStyles().add(registryCssFile);
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowView.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowView.java
index 69e2ad51..910186c1 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowView.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowView.java
@@ -12,7 +12,8 @@ import java.util.UUID;
 
 import com.vaadin.ui.CssLayout;
 
-import eu.etaxonomy.cdm.vaadin.presenter.registration.RegistrationType;
+import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
+import eu.etaxonomy.cdm.vaadin.presenter.registration.RegistrationDTO;
 import eu.etaxonomy.vaadin.mvp.ApplicationView;
 
 /**
@@ -42,9 +43,6 @@ public interface RegistrationWorkflowView extends ApplicationView{
      */
     void openReferenceEditor(UUID referenceUuid);
 
-    public void makeWorflow(RegistrationType type);
-
-
     /**
      * @param subheaderText
      */
@@ -55,6 +53,13 @@ public interface RegistrationWorkflowView extends ApplicationView{
      */
     void setHeaderText(String subheaderText);
 
+    /**
+     * @param workingset
+     */
+    void setWorkingset(RegistrationWorkingSet workingset);
+
+    void addBlockingRegistration(RegistrationDTO blocking);
+
 
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowViewBean.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowViewBean.java
index 2d7b11a4..c855e76b 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowViewBean.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowViewBean.java
@@ -8,20 +8,34 @@
 */
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.UUID;
 
 import org.springframework.beans.factory.annotation.Autowired;
 
 import com.vaadin.navigator.View;
 import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
+import com.vaadin.server.FontAwesome;
+import com.vaadin.server.GenericFontIcon;
 import com.vaadin.spring.annotation.SpringView;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
 import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.themes.ValoTheme;
 
+import eu.etaxonomy.cdm.mock.RegistrationStatus;
 import eu.etaxonomy.cdm.vaadin.component.registration.WorkflowSteps;
 import eu.etaxonomy.cdm.vaadin.event.EntityEventType;
 import eu.etaxonomy.cdm.vaadin.event.ReferenceEvent;
 import eu.etaxonomy.cdm.vaadin.event.TaxonNameEvent;
 import eu.etaxonomy.cdm.vaadin.event.registration.RegistrationWorkflowEvent;
+import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationWorkingSet;
+import eu.etaxonomy.cdm.vaadin.model.registration.WorkflowStep;
+import eu.etaxonomy.cdm.vaadin.presenter.registration.RegistrationDTO;
 import eu.etaxonomy.cdm.vaadin.presenter.registration.RegistrationType;
 import eu.etaxonomy.cdm.vaadin.presenter.registration.RegistrationWorkflowPresenter;
 import eu.etaxonomy.cdm.vaadin.view.AbstractPageView;
@@ -50,11 +64,14 @@ public class RegistrationWorkflowViewBean extends AbstractPageView<RegistrationW
 
     public RegistrationType regType = null;
 
-    CssLayout workflow;
+    private CssLayout workflow;
+
+    private List<CssLayout> registrations = new ArrayList<>();
 
     private String headerText = "-- empty --";
     private String subheaderText = SUBHEADER_DEEFAULT;
 
+
     public RegistrationWorkflowViewBean() {
         super();
 
@@ -85,24 +102,96 @@ public class RegistrationWorkflowViewBean extends AbstractPageView<RegistrationW
         }
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setWorkingset(RegistrationWorkingSet workingset) {
+
+        CssLayout registration = new CssLayout();
+        registration.setWidth(100, Unit.PERCENTAGE);
+        registration.addComponent(createRegistrationCaption(workingset));
+        registrations.add(registration);
+        workflow.addComponent(registration);
+
+    }
+
+    /**
+     * @param workingset
+     * @return
+     */
+    private Component createRegistrationCaption(RegistrationWorkingSet workingset) {
+        String citation = workingset.getCitation();
+        int messagesCount = workingset.messagesCount();
+        RegistrationStatus status = workingset.lowestStatus();
+
+        return createRegistrationCaption(citation, status, messagesCount);
+    }
+
+    /**
+     * @param workingset
+     * @return
+     */
+    private Component createRegistrationCaption(RegistrationDTO regitrationDto) {
+        String citation = regitrationDto.getCitation();
+        int messagesCount = regitrationDto.getMessages().size();
+        RegistrationStatus status = regitrationDto.getStatus();
+
+        return createRegistrationCaption(citation, status, messagesCount);
+    }
+
+    /**
+     * @param workingset
+     * @return
+     */
+    private Component createRegistrationCaption(String citation, RegistrationStatus status, int messagesCount){
+
+        GridLayout grid = new GridLayout(2, 1);
+        grid.addStyleName("registration-workflow-item");
+        grid.setWidth(100, Unit.PERCENTAGE);
+        Label citationLabel = new Label(citation);
+        grid.addComponent(citationLabel, 0, 0);
+        grid.setColumnExpandRatio(0, 1.0f);
+
+        CssLayout iconContainer = new CssLayout();
+        iconContainer.setStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
+        if(messagesCount > 0){
+            Button messagesButton = new Button(FontAwesome.COMMENT);
+            messagesButton.addStyleName(ValoTheme.BUTTON_BORDERLESS);
+            iconContainer.addComponent(messagesButton);
+        }
+
+        WorkflowStep step = WorkflowStep.from(status, citation != null && !citation.isEmpty());
+        Label statusIndicator = new Label(WorkflowStep.from(status, citation != null && !citation.isEmpty()).getHtml());
+        statusIndicator.setCaptionAsHtml(true);
+        statusIndicator.setStyleName("workflow-step label-nowrap");
+        statusIndicator.setIcon(new GenericFontIcon("IcoMoon", 0xe900)); // triangle-right
+        CssLayout statusWrap = new CssLayout(statusIndicator);
+        statusWrap.setStyleName("workflow-step-wrap bg-status-" + status.name());
+        iconContainer.addComponent(statusWrap);
+
+        grid.addComponent(iconContainer, 1, 0);
+        grid.setComponentAlignment(iconContainer, Alignment.TOP_RIGHT);
+
+        return grid;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
     @Override
-    public void makeWorflow(RegistrationType type){
-        switch (type) {
-        case NAME:
-            addNameWorkflow();
-            break;
-        case TYPIFICATION:
-            addTypificationWorkflow();
-            break;
-        default:
-            break;
+    public void addBlockingRegistration(RegistrationDTO blocking) {
+        if(registrations == null) {
+            throw new RuntimeException("A Workingset must be present prior adding blocking registrations.");
         }
+        // add the blocking registration
+
     }
 
     /**
     *
     */
-   private void addNameWorkflow() {
+   private void addBulletWorkflowName() {
        WorkflowSteps steps = new WorkflowSteps();
        steps.appendNewWorkflowItem(1, "Publication details including the publisher.",
                e -> eventBus.publishEvent(new ReferenceEvent(EntityEventType.EDIT)));
@@ -116,7 +205,7 @@ public class RegistrationWorkflowViewBean extends AbstractPageView<RegistrationW
    /**
    *
    */
-  private void addTypificationWorkflow() {
+  private void addBulletWorkflowTypification() {
       WorkflowSteps steps = new WorkflowSteps();
       steps.appendNewWorkflowItem(1, "Publication details including the publisher.",
               e -> eventBus.publishEvent(new ReferenceEvent(EntityEventType.EDIT)));
diff --git a/src/main/webapp/VAADIN/fonts/icomoon.eot b/src/main/webapp/VAADIN/fonts/icomoon.eot
new file mode 100644
index 00000000..0788b688
Binary files /dev/null and b/src/main/webapp/VAADIN/fonts/icomoon.eot differ
diff --git a/src/main/webapp/VAADIN/fonts/icomoon.svg b/src/main/webapp/VAADIN/fonts/icomoon.svg
new file mode 100644
index 00000000..ae5067d4
--- /dev/null
+++ b/src/main/webapp/VAADIN/fonts/icomoon.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="icomoon" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe900;" glyph-name="icon-triangle-right" horiz-adv-x="208" d="M0.033 959.853l203.717-511.79-203.684-511.919z" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/src/main/webapp/VAADIN/fonts/icomoon.ttf b/src/main/webapp/VAADIN/fonts/icomoon.ttf
new file mode 100644
index 00000000..d59c3ba8
Binary files /dev/null and b/src/main/webapp/VAADIN/fonts/icomoon.ttf differ
diff --git a/src/main/webapp/VAADIN/fonts/icomoon.woff b/src/main/webapp/VAADIN/fonts/icomoon.woff
new file mode 100644
index 00000000..9f5cd586
Binary files /dev/null and b/src/main/webapp/VAADIN/fonts/icomoon.woff differ
diff --git a/src/main/webapp/VAADIN/fonts/test.txt b/src/main/webapp/VAADIN/fonts/test.txt
new file mode 100644
index 00000000..5ab2f8a4
--- /dev/null
+++ b/src/main/webapp/VAADIN/fonts/test.txt
@@ -0,0 +1 @@
+Hello
\ No newline at end of file
diff --git a/src/main/webapp/VAADIN/themes/edit-valo/edit-valo.scss b/src/main/webapp/VAADIN/themes/edit-valo/edit-valo.scss
index 443d441e..d7ff98a7 100644
--- a/src/main/webapp/VAADIN/themes/edit-valo/edit-valo.scss
+++ b/src/main/webapp/VAADIN/themes/edit-valo/edit-valo.scss
@@ -51,6 +51,22 @@ $v-component-group-spacing: 6px;
 
 @import "../valo/valo.scss";
 
+
+// ========================================== //
+
+// import custom font icons TODO rename font
+@include v-font(IcoMoon, "../../../../../fonts/icomoon");
+
+.IcoMoon {
+   font-family: IcoMoon;
+   font-style: normal;
+   font-weight: normal;
+   -webkit-font-smoothing: antialiased;
+   -moz-osx-font-smoothing: grayscale;
+   display: inline-block;
+   text-align: center;
+}
+
 // ========================================== //
 // Status colors for the redistration
 // 
@@ -205,10 +221,70 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
 
     // --------------------------------------------------- //
     
-    .registration-item {
+    .registration-list-item {
         border-top: valo-border($border: $v-border, $color: $v-background-color, $strength: 0.7);
         padding-top: 4px; // avoid button group to overlap with border
     }
+
+   .registration-workflow-item {
+       border: valo-border($border: $v-border, $color: $v-background-color, $strength: 0.7);
+    }
+
+    // tab element being part of a process ----------- //
+    .workflow-step-wrap {
+        padding-right: 10px;
+        height: $v-font-size * 3;
+        background-color: scale-color(lighten($v-app-background-color, 20%), $saturation: -20%);
+        @include box-shadow(inset 0 0 5px $v-app-background-color);
+    }
+    .workflow-step {
+        line-height: $v-font-size * 3;
+    }
+    .v-caption-workflow-step {
+        vertical-align: top;
+        padding: 0;
+         .v-icon {
+            line-height: $v-font-size * 3;
+            font-size: $v-font-size * 3.5;
+            padding-right: 10px;
+            color: $v-background-color;
+        }
+  
+    }
+
+    // ----------------------------------------------- //
+    .status-REJECTED {
+        color: $status-rejected-color;
+    }
+    .status-CURATION {
+        color: $status-curation-color;
+    }
+    .status-PREPARATION {
+        color: $status-preparation-color;
+    }
+    .status-PUBLISHED {
+        color: $status-published-color;
+    }
+    .status-READY {
+        color: $status-ready-color;
+    }
+
+    .bg-status-REJECTED {
+        background-color: $status-rejected-color;
+    }
+    .bg-status-CURATION {
+        background-color: $status-curation-color;
+    }
+    .bg-status-PREPARATION {
+        background-color: $status-preparation-color;
+    }
+    .bg-status-PUBLISHED {
+        background-color: $status-published-color;
+    }
+    .bg-status-READY {
+        background-color: $status-ready-color;
+    }
+    // ----------------------------------------------- //
     
     #registration-list {
         /* --- for the css layout --- */
@@ -252,22 +328,6 @@ $status-ready-color: adjust-color($plain-red, $hue: 180deg);
                 color: $status-ready-color;
             }
         }
-        // for RegistrationItems
-        .v-caption-status-REJECTED {
-            color: $status-rejected-color;
-        }
-        .v-caption-status-CURATION {
-            color: $status-curation-color;
-        }
-        .v-caption-status-PREPARATION {
-            color: $status-preparation-color;
-        }
-        .v-caption-status-PUBLISHED {
-            color: $status-published-color;
-        }
-        .v-caption-status-READY {
-            color: $status-ready-color;
-        }
     }
 
 
