summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java111
1 files changed, 71 insertions, 40 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java b/src/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java
index c5bdf408..38476d7d 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/gui/ResultWindow.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.visualization.gui;
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
@@ -63,6 +63,9 @@ import de.lmu.ifi.dbs.elki.visualization.visualizers.VisualizerUtil;
/**
* Swing window to manage a particular result visualization.
*
+ * Yes, this is very basic and ad-hoc. Feel free to contribute something more
+ * advanced to ELKI!
+ *
* @author Erich Schubert
* @author Remigius Wojdanowski
*
@@ -137,16 +140,23 @@ public class ResultWindow extends JFrame implements ResultListener {
private HierarchicalResult result;
/**
+ * Single view mode. No overview / detail view split
+ */
+ private boolean single = false;
+
+ /**
* Constructor.
*
* @param title Window title
* @param result Result to visualize
* @param context Visualizer context
+ * @param single Single visualization mode
*/
- public ResultWindow(String title, HierarchicalResult result, VisualizerContext context) {
+ public ResultWindow(String title, HierarchicalResult result, VisualizerContext context, boolean single) {
super(title);
this.context = context;
this.result = result;
+ this.single = single;
// close handler
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
@@ -158,8 +168,28 @@ public class ResultWindow extends JFrame implements ResultListener {
catch(Exception e) {
// Ignore - icon not found is not fatal.
}
+
+ // Create a panel and add the button, status label and the SVG canvas.
+ final JPanel panel = new JPanel(new BorderLayout());
+
+ JMenuBar menubar = new JMenuBar();
+ JMenu filemenu = new JMenu("File");
+ filemenu.setMnemonic(KeyEvent.VK_F);
// setup buttons
+ if(!single) {
+ overviewItem = new JMenuItem("Overview");
+ overviewItem.setMnemonic(KeyEvent.VK_O);
+ overviewItem.setEnabled(false);
+ overviewItem.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent ae) {
+ showOverview();
+ }
+ });
+ filemenu.add(overviewItem);
+ }
+
exportItem = new JMenuItem("Export");
exportItem.setMnemonic(KeyEvent.VK_E);
exportItem.setEnabled(false);
@@ -169,26 +199,8 @@ public class ResultWindow extends JFrame implements ResultListener {
saveCurrentPlot();
}
});
-
- quitItem = new JMenuItem("Quit");
- quitItem.setMnemonic(KeyEvent.VK_Q);
- quitItem.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- close();
- }
- });
-
- overviewItem = new JMenuItem("Overview");
- overviewItem.setMnemonic(KeyEvent.VK_O);
- overviewItem.setEnabled(false);
- overviewItem.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent ae) {
- showOverview();
- }
- });
-
+ filemenu.add(exportItem);
+
editItem = new JMenuItem("Table View/Edit");
editItem.setMnemonic(KeyEvent.VK_T);
editItem.addActionListener(new ActionListener() {
@@ -197,17 +209,18 @@ public class ResultWindow extends JFrame implements ResultListener {
showTableView();
}
});
-
- // Create a panel and add the button, status label and the SVG canvas.
- final JPanel panel = new JPanel(new BorderLayout());
-
- JMenuBar menubar = new JMenuBar();
- JMenu filemenu = new JMenu("File");
- filemenu.setMnemonic(KeyEvent.VK_F);
- filemenu.add(overviewItem);
- filemenu.add(exportItem);
// FIXME: re-add when it is working again.
// filemenu.add(editItem);
+
+ quitItem = new JMenuItem("Quit");
+ quitItem.setMnemonic(KeyEvent.VK_Q);
+ quitItem.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ close();
+ }
+ });
+
filemenu.add(quitItem);
menubar.add(filemenu);
@@ -222,7 +235,7 @@ public class ResultWindow extends JFrame implements ResultListener {
this.getContentPane().add(panel);
- this.overview = new OverviewPlot(result, context);
+ this.overview = new OverviewPlot(result, context, single);
// when a subplot is clicked, show the selected subplot.
overview.addActionListener(new ActionListener() {
@Override
@@ -303,8 +316,10 @@ public class ResultWindow extends JFrame implements ResultListener {
* @param e
*/
protected void showSubplot(DetailViewSelectedEvent e) {
- currentSubplot = e.makeDetailView();
- showPlot(currentSubplot);
+ if(!single) {
+ currentSubplot = e.makeDetailView();
+ showPlot(currentSubplot);
+ }
}
/**
@@ -317,7 +332,9 @@ public class ResultWindow extends JFrame implements ResultListener {
((DetailView) svgCanvas.getPlot()).destroy();
}
svgCanvas.setPlot(plot);
- overviewItem.setEnabled(plot != overview);
+ if (overviewItem != null) {
+ overviewItem.setEnabled(plot != overview);
+ }
exportItem.setEnabled(plot != null);
}
@@ -384,7 +401,8 @@ public class ResultWindow extends JFrame implements ResultListener {
nochildren = false;
}
}
- // Item for a visualizer
+
+ // Item for the visualizer
JMenuItem item = makeMenuItemForVisualizer(r);
if(nochildren) {
if(item != null) {
@@ -402,12 +420,15 @@ public class ResultWindow extends JFrame implements ResultListener {
}
parent.add(submenu);
}
+
return true;
}
public JMenuItem makeMenuItemForVisualizer(Result r) {
if(VisualizationTask.class.isInstance(r)) {
final VisualizationTask v = (VisualizationTask) r;
+ JMenuItem item;
+
// Currently enabled?
final String name = v.getLongName();
boolean enabled = VisualizerUtil.isVisible(v);
@@ -421,12 +442,12 @@ public class ResultWindow extends JFrame implements ResultListener {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
- context.setVisualizationVisibility(v, visItem.getState());
+ VisualizerUtil.setVisible(context, v, visItem.getState());
}
});
}
});
- return visItem;
+ item = visItem;
}
else {
final JRadioButtonMenuItem visItem = new JRadioButtonMenuItem(name, enabled);
@@ -437,12 +458,22 @@ public class ResultWindow extends JFrame implements ResultListener {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
- context.setVisualizationVisibility(v, visItem.isSelected());
+ VisualizerUtil.setVisible(context, v, visItem.isSelected());
}
});
}
});
- return visItem;
+ item = visItem;
+ }
+ boolean hasoptions = VisualizerUtil.hasOptions(v);
+ if(hasoptions) {
+ final JMenu menu = new JMenu(name);
+ menu.add(item);
+ // TODO: build a menu for the visualizer!
+ return menu;
+ }
+ else {
+ return item;
}
}
return null;