diff options
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.java | 111 |
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; |