summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/visualization/gui/overview
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/gui/overview')
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java8
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java37
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java6
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java21
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/gui/overview/package-info.java2
6 files changed, 43 insertions, 33 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java
index 4c950225..6723c77f 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/DetailViewSelectedEvent.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.gui.overview;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java
index 36851b85..5fb7019e 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/LayerMap.java
@@ -3,7 +3,7 @@ package de.lmu.ifi.dbs.elki.visualization.gui.overview;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -41,7 +41,7 @@ public class LayerMap {
/**
* The actual map
*/
- private HashMap<Pair<PlotItem, VisualizationTask>, Pair<Element, Visualization>> map = new HashMap<Pair<PlotItem, VisualizationTask>, Pair<Element, Visualization>>();
+ private HashMap<Pair<PlotItem, VisualizationTask>, Pair<Element, Visualization>> map = new HashMap<>();
/**
* Helper function for building a key object
@@ -51,7 +51,7 @@ public class LayerMap {
* @return Key
*/
private Pair<PlotItem, VisualizationTask> key(PlotItem item, VisualizationTask task) {
- return new Pair<PlotItem, VisualizationTask>(item, task);
+ return new Pair<>(item, task);
}
/**
@@ -62,7 +62,7 @@ public class LayerMap {
* @return Value object
*/
private Pair<Element, Visualization> value(Element elem, Visualization vis) {
- return new Pair<Element, Visualization>(elem, vis);
+ return new Pair<>(elem, vis);
}
/**
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java
index 271a62ff..c4825b1e 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/OverviewPlot.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.gui.overview;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -43,6 +43,7 @@ import de.lmu.ifi.dbs.elki.result.Result;
import de.lmu.ifi.dbs.elki.result.ResultHierarchy;
import de.lmu.ifi.dbs.elki.result.ResultListener;
import de.lmu.ifi.dbs.elki.result.ResultUtil;
+import de.lmu.ifi.dbs.elki.utilities.datastructures.hierarchy.Hierarchy;
import de.lmu.ifi.dbs.elki.utilities.pairs.Pair;
import de.lmu.ifi.dbs.elki.visualization.VisualizationTask;
import de.lmu.ifi.dbs.elki.visualization.VisualizerContext;
@@ -90,7 +91,7 @@ public class OverviewPlot extends SVGPlot implements ResultListener {
/**
* Action listeners for this plot.
*/
- private ArrayList<ActionListener> actionListeners = new ArrayList<ActionListener>();
+ private ArrayList<ActionListener> actionListeners = new ArrayList<>();
/**
* Single view mode
@@ -191,7 +192,7 @@ public class OverviewPlot extends SVGPlot implements ResultListener {
* @return Arrangement
*/
private RectangleArranger<PlotItem> arrangeVisualizations(double width, double height) {
- RectangleArranger<PlotItem> plotmap = new RectangleArranger<PlotItem>(width, height);
+ RectangleArranger<PlotItem> plotmap = new RectangleArranger<>(width, height);
ArrayList<Projector> projectors = ResultUtil.filterResults(context.getResult(), Projector.class);
// Rectangle layout
@@ -209,8 +210,11 @@ public class OverviewPlot extends SVGPlot implements ResultListener {
ResultHierarchy hier = context.getHierarchy();
ArrayList<VisualizationTask> tasks = ResultUtil.filterResults(context.getResult(), VisualizationTask.class);
nextTask: for (VisualizationTask task : tasks) {
- for (Result parent : hier.getParents(task)) {
- if (parent instanceof Projector) {
+ if (!task.visible) {
+ continue;
+ }
+ for (Hierarchy.Iter<Result> iter = hier.iterParents(task); iter.valid(); iter.advance()) {
+ if (iter.get() instanceof Projector) {
continue nextTask;
}
}
@@ -276,7 +280,7 @@ public class OverviewPlot extends SVGPlot implements ResultListener {
hasDetails |= !task.nodetail;
Pair<Element, Visualization> pair = oldlayers.remove(it, task);
if (pair == null) {
- pair = new Pair<Element, Visualization>(null, null);
+ pair = new Pair<>(null, null);
pair.first = svgElement(SVGConstants.SVG_G_TAG);
}
if (pair.second == null) {
@@ -368,7 +372,7 @@ public class OverviewPlot extends SVGPlot implements ResultListener {
// New task?
if (pair == null) {
if (visibleInOverview(task)) {
- pair = new Pair<Element, Visualization>(null, null);
+ pair = new Pair<>(null, null);
pair.first = svgElement(SVGConstants.SVG_G_TAG);
pair.second = embedOrThumbnail(thumbsize, it, task, pair.first);
vistoelem.get(it, null).first.appendChild(pair.first);
@@ -381,13 +385,6 @@ public class OverviewPlot extends SVGPlot implements ResultListener {
if (pair.first.hasAttribute(SVGConstants.CSS_VISIBILITY_PROPERTY)) {
pair.first.removeAttribute(SVGConstants.CSS_VISIBILITY_PROPERTY);
}
- // if not yet rendered, add a thumbnail
- if (!pair.first.hasChildNodes()) {
- LOG.warning("This codepath should no longer be needed.");
- Visualization visualization = embedOrThumbnail(thumbsize, it, task, pair.first);
- vistoelem.put(it, task, pair.first, visualization);
- refreshcss = true;
- }
} else {
// hide if there is anything to hide.
if (pair.first != null && pair.first.hasChildNodes()) {
@@ -562,6 +559,18 @@ public class OverviewPlot extends SVGPlot implements ResultListener {
@Override
public void resultChanged(Result current) {
LOG.debug("result changed: " + current);
+ if (current instanceof VisualizationTask) {
+ boolean relayout = true;
+ for (Hierarchy.Iter<Result> iter = context.getHierarchy().iterParents(current); iter.valid(); iter.advance()) {
+ if (iter.get() instanceof Projector) {
+ relayout = false;
+ break;
+ }
+ }
+ if (relayout) {
+ reinitOnRefresh = true;
+ }
+ }
lazyRefresh();
}
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java
index 73ee797e..7919e07e 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/PlotItem.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.gui.overview;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -72,12 +72,12 @@ public class PlotItem {
/**
* The visualization tasks at this location
*/
- public List<VisualizationTask> tasks = new LinkedList<VisualizationTask>();
+ public List<VisualizationTask> tasks = new LinkedList<>();
/**
* Subitems to plot
*/
- public Collection<PlotItem> subitems = new LinkedList<PlotItem>();
+ public Collection<PlotItem> subitems = new LinkedList<>();
/**
* Constructor.
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java
index b5e6031e..441f7ae2 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/RectangleArranger.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.gui.overview;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -34,6 +34,7 @@ import java.util.Set;
import java.util.logging.Level;
import de.lmu.ifi.dbs.elki.logging.Logging;
+import de.lmu.ifi.dbs.elki.logging.LoggingConfiguration;
/**
* This is a rather naive rectangle arrangement class. It will try to place
@@ -79,12 +80,12 @@ public class RectangleArranger<T> {
/**
* Map indicating which cells are used.
*/
- private ArrayList<ArrayList<Object>> usage = new ArrayList<ArrayList<Object>>();
+ private ArrayList<ArrayList<Object>> usage = new ArrayList<>();
/**
* Data
*/
- private Map<T, double[]> map = new HashMap<T, double[]>();
+ private Map<T, double[]> map = new HashMap<>();
/**
* Constructor.
@@ -108,7 +109,7 @@ public class RectangleArranger<T> {
this.widths.add(width);
this.heights.add(height);
// setup usage matrix
- ArrayList<Object> u = new ArrayList<Object>();
+ ArrayList<Object> u = new ArrayList<>();
u.add(null);
this.usage.add(u);
assertConsistent();
@@ -320,7 +321,7 @@ public class RectangleArranger<T> {
heights.insert(bestey + 1, besthi);
heights.set(bestey, heights.get(bestey) - besthi);
// Update used map
- usage.add(bestey + 1, new ArrayList<Object>(usage.get(bestey)));
+ usage.add(bestey + 1, new ArrayList<>(usage.get(bestey)));
}
protected void splitCol(int bestex, double bestwi) {
@@ -361,7 +362,7 @@ public class RectangleArranger<T> {
}
// Add row:
{
- ArrayList<Object> row = new ArrayList<Object>();
+ ArrayList<Object> row = new ArrayList<>();
for(int x = 0; x <= cols; x++) {
row.add(null);
}
@@ -521,8 +522,8 @@ public class RectangleArranger<T> {
* @param args
*/
public static void main(String[] args) {
- LOG.getWrappedLogger().setLevel(Level.FINEST);
- RectangleArranger<String> r = new RectangleArranger<String>(1.3);
+ LoggingConfiguration.setLevelFor(RectangleArranger.class.getName(), Level.FINEST.getName());
+ RectangleArranger<String> r = new RectangleArranger<>(1.3);
r.put(4., 1., "Histogram");
r.put(4., 4., "3D view");
r.put(1., 1., "Meta 1");
@@ -531,14 +532,14 @@ public class RectangleArranger<T> {
r.put(2., 2., "Meta 4");
r.put(2., 2., "Meta 5");
- r = new RectangleArranger<String>(3., 3.);
+ r = new RectangleArranger<>(3., 3.);
r.put(1., 2., "A");
r.put(2., 1., "B");
r.put(1., 2., "C");
r.put(2., 1., "D");
r.put(2., 2., "E");
- r = new RectangleArranger<String>(4 - 2.6521739130434785);
+ r = new RectangleArranger<>(4 - 2.6521739130434785);
r.put(4., .5, "A");
r.put(4., 3., "B");
r.put(4., 1., "C");
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/package-info.java b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/package-info.java
index 013f86ca..302654be 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/package-info.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/gui/overview/package-info.java
@@ -7,7 +7,7 @@
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
-Copyright (C) 2012
+Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team