diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/AcquisitionMain.java b/ch.psi.fda/src/main/java/ch/psi/fda/AcquisitionMain.java
index 2925168..d49dd87 100644
--- a/ch.psi.fda/src/main/java/ch/psi/fda/AcquisitionMain.java
+++ b/ch.psi.fda/src/main/java/ch/psi/fda/AcquisitionMain.java
@@ -54,6 +54,7 @@ import com.google.common.eventbus.EventBus;
import sun.misc.Signal;
import sun.misc.SignalHandler;
import ch.psi.fda.aq.Acquisition;
+import ch.psi.fda.aq.VisualizationMapper;
import ch.psi.fda.gui.ProgressPanel;
import ch.psi.fda.gui.ScrollableFlowPanel;
import ch.psi.fda.install.ApplicationConfigurator;
@@ -267,8 +268,11 @@ public class AcquisitionMain {
// Only register data visualization task/processor if there are visualizations
if(vis){
- visualizer = new Visualizer(c.getVisualization());
+ visualizer = new Visualizer(VisualizationMapper.mapVisualizations(c.getVisualization()));
b.register(visualizer);
+
+ // TODO eventually set update on delimiter/dim boundary here
+
// If there is a continous dimension only update plot at the end of a line
if(c.getScan() != null && c.getScan().getCdimension()!=null){
visualizer.setUpdateAtStreamElement(false);
diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/VisualizationMain.java b/ch.psi.fda/src/main/java/ch/psi/fda/VisualizationMain.java
index cf102f8..e975538 100644
--- a/ch.psi.fda/src/main/java/ch/psi/fda/VisualizationMain.java
+++ b/ch.psi.fda/src/main/java/ch/psi/fda/VisualizationMain.java
@@ -48,6 +48,7 @@ import org.xml.sax.SAXException;
import com.google.common.eventbus.AsyncEventBus;
import com.google.common.eventbus.EventBus;
+import ch.psi.fda.aq.VisualizationMapper;
import ch.psi.fda.deserializer.DataDeserializer;
import ch.psi.fda.deserializer.DataDeserializerTXT;
import ch.psi.fda.gui.ScrollableFlowPanel;
@@ -121,7 +122,7 @@ public class VisualizationMain {
DataDeserializer deserializer = new DataDeserializerTXT(bus, data);
// Create Visualizer
- Visualizer visualizer = new Visualizer(configuration.getVisualization());
+ Visualizer visualizer = new Visualizer(VisualizationMapper.mapVisualizations(configuration.getVisualization()));
// visualizer.setTerminateAtEOS(true);
// Adapt default visualizer behavior to optimize performance for visualization
diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/aq/VisualizationMapper.java b/ch.psi.fda/src/main/java/ch/psi/fda/aq/VisualizationMapper.java
new file mode 100644
index 0000000..24e327b
--- /dev/null
+++ b/ch.psi.fda/src/main/java/ch/psi/fda/aq/VisualizationMapper.java
@@ -0,0 +1,271 @@
+/**
+ *
+ * Copyright 2013 Paul Scherrer Institute. All rights reserved.
+ *
+ * This code is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This code 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 Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this code. If not, see .
+ *
+ */
+package ch.psi.fda.aq;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import ch.psi.fda.model.v1.ArrayDetector;
+import ch.psi.fda.model.v1.ContinuousPositioner;
+import ch.psi.fda.model.v1.Detector;
+import ch.psi.fda.model.v1.LinearPositioner;
+import ch.psi.fda.model.v1.Positioner;
+import ch.psi.fda.model.v1.PseudoPositioner;
+import ch.psi.fda.model.v1.Visualization;
+import ch.psi.fda.visualizer.SeriesDataFilter;
+import ch.psi.fda.visualizer.XYSeriesArrayDataFilter;
+import ch.psi.fda.visualizer.XYSeriesDataFilter;
+import ch.psi.fda.visualizer.XYZSeriesArrayDataFilter;
+import ch.psi.fda.visualizer.XYZSeriesDataFilter;
+import ch.psi.plot.xyz.MatrixPlot;
+import ch.psi.plot.xyz.MatrixPlotData;
+
+/**
+ * @author ebner
+ *
+ */
+public class VisualizationMapper {
+
+
+ /**
+ * Retrieve id string of the passed object
+ * @param object
+ * @return Id string of object
+ */
+ private static String getId(Object object){
+ String id;
+ if(object instanceof Positioner){
+ id = ((Positioner)object).getId();
+ }
+ else if (object instanceof Detector){
+ id = ((Detector)object).getId();
+ }
+ else if (object instanceof ch.psi.fda.model.v1.Manipulation){
+ id = ((ch.psi.fda.model.v1.Manipulation)object).getId();
+ }
+ // For testing purposes
+ else if(object instanceof String){
+ id = (String) object;
+ }
+ else{
+ throw new RuntimeException("Unable to identify id of object reference "+object);
+ }
+ return id;
+ }
+
+ public static List mapVisualizations(List vl){
+ List filters = new ArrayList();
+
+ for(Visualization v: vl){
+ if(v instanceof ch.psi.fda.model.v1.LinePlot){
+ ch.psi.fda.model.v1.LinePlot lp = (ch.psi.fda.model.v1.LinePlot) v;
+
+ // Create plot for visualization
+ ch.psi.plot.xy.LinePlot plot = new ch.psi.plot.xy.LinePlot(lp.getTitle());
+
+ // Create data filter for visualization
+ String idX = getId(lp.getX());
+
+ List