summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java b/src/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java
index 341aa69f..8b6f4892 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/gui/detail/DetailView.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.gui.detail;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2011
+ Copyright (C) 2012
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -25,6 +25,7 @@ package de.lmu.ifi.dbs.elki.visualization.gui.detail;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
@@ -35,13 +36,13 @@ import de.lmu.ifi.dbs.elki.logging.Logging;
import de.lmu.ifi.dbs.elki.logging.LoggingUtil;
import de.lmu.ifi.dbs.elki.result.Result;
import de.lmu.ifi.dbs.elki.result.ResultListener;
-import de.lmu.ifi.dbs.elki.utilities.iterator.IterableUtil;
import de.lmu.ifi.dbs.elki.visualization.VisualizationTask;
import de.lmu.ifi.dbs.elki.visualization.VisualizerContext;
import de.lmu.ifi.dbs.elki.visualization.batikutil.AttributeModifier;
import de.lmu.ifi.dbs.elki.visualization.css.CSSClass;
import de.lmu.ifi.dbs.elki.visualization.gui.overview.PlotItem;
import de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary;
+import de.lmu.ifi.dbs.elki.visualization.svg.SVGEffects;
import de.lmu.ifi.dbs.elki.visualization.svg.SVGPlot;
import de.lmu.ifi.dbs.elki.visualization.svg.SVGUtil;
import de.lmu.ifi.dbs.elki.visualization.visualizers.Visualization;
@@ -105,6 +106,8 @@ public class DetailView extends SVGPlot implements ResultListener {
// TODO: only do this when there is an interactive visualizer?
setDisableInteractions(true);
addBackground(context);
+ SVGEffects.addShadowFilter(this);
+ SVGEffects.addLightGradient(this);
redraw();
context.addResultListener(this);
@@ -129,18 +132,20 @@ public class DetailView extends SVGPlot implements ResultListener {
SVGUtil.setCSSClass(bg, cls.getName());
// Note that we rely on this being called before any other drawing routines.
- getDocument().getRootElement().appendChild(bg);
+ getRoot().appendChild(bg);
}
protected void redraw() {
destroyVisualizations();
- width = getRatio();
- height = 1.0;
+ // Try to keep the area approximately 1.0
+ width = Math.sqrt(getRatio());
+ height = 1.0 / width;
ArrayList<Visualization> layers = new ArrayList<Visualization>();
// TODO: center/arrange visualizations?
- for(VisualizationTask task : IterableUtil.fromIterator(visi.visIterator())) {
+ for(Iterator<VisualizationTask> tit = visi.tasks.iterator(); tit.hasNext();) {
+ VisualizationTask task = tit.next();
if(VisualizerUtil.isVisible(task)) {
try {
Visualization v = task.getFactory().makeVisualization(task.clone(this, context, visi.proj, width, height));
@@ -152,7 +157,7 @@ public class DetailView extends SVGPlot implements ResultListener {
LoggingUtil.exception("Visualization failed.", e);
}
else {
- LoggingUtil.warning("Visualizer " + task.getFactory().getClass().getName() + " failed - enable debugging to see details.");
+ LoggingUtil.warning("Visualizer " + task.getFactory().getClass().getName() + " failed - enable debugging to see details: " + e.toString());
}
}
}
@@ -160,7 +165,7 @@ public class DetailView extends SVGPlot implements ResultListener {
// Arrange
for(Visualization layer : layers) {
if(layer.getLayer() != null) {
- this.getRoot().appendChild(layer.getLayer());
+ getRoot().appendChild(layer.getLayer());
}
else {
LoggingUtil.warning("NULL layer seen.");
@@ -216,6 +221,14 @@ public class DetailView extends SVGPlot implements ResultListener {
}
/**
+ * @return the layermap
+ */
+ // TODO: Temporary
+ public Map<VisualizationTask, Visualization> getLayermap() {
+ return layermap;
+ }
+
+ /**
* Class used to insert a new visualization layer
*
* @author Erich Schubert