diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/gui/overview')
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 |