Author: kono
Date: 2012-07-11 19:51:18 -0700 (Wed, 11 Jul 2012)
New Revision: 29851

Added:
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisResultPanel.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ResultPanel.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ResultPanelFactory.java
Removed:
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisDialog.java
Modified:
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/AnalysisExecutor.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/AnalyzeNetworkAction.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/CyActivator.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/LoadNetstatsAction.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/data/settings/PluginSettings.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ChartDisplayPanel.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ChartExpandablePanel.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/MapParameterDialog.java
   
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/VisualizeParameterDialog.java
Log:
fixes #1260 Network Analyzer now uses Result CytoPanel.

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/AnalysisExecutor.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/AnalysisExecutor.java
        2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/AnalysisExecutor.java
        2012-07-12 02:51:18 UTC (rev 29851)
@@ -17,6 +17,7 @@
 
 package de.mpg.mpi_inf.bioinf.netanalyzer;
 
+import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.ArrayList;
@@ -26,12 +27,15 @@
 import javax.swing.ProgressMonitor;
 import javax.swing.Timer;
 
+import org.cytoscape.application.swing.CySwingApplication;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import de.mpg.mpi_inf.bioinf.netanalyzer.data.Messages;
-import de.mpg.mpi_inf.bioinf.netanalyzer.ui.AnalysisDialog;
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.AnalysisResultPanel;
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.ResultPanel;
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.ResultPanelFactory;
 import de.mpg.mpi_inf.bioinf.netanalyzer.ui.VisualStyleBuilder;
 
 /**
@@ -46,7 +50,7 @@
  * <li>stops the analyzer if the user presses the &quot;Cancel&quot; button of
  * the dialog;</li>
  * <li>(optionally) creates an
- * {@link de.mpg.mpi_inf.bioinf.netanalyzer.ui.AnalysisDialog} to display
+ * {@link de.mpg.mpi_inf.bioinf.netanalyzer.ui.AnalysisResultPanel} to display
  * results once the analysis completes successfully.</li>
  * </ul>
  * </p>
@@ -60,6 +64,10 @@
        private final CyNetworkViewManager viewManager;
        private final VisualMappingManager vmm;
        private final VisualStyleBuilder vsBuilder;
+       
+       private final ResultPanelFactory resultPanelFactory;
+       private final Window owner;
+       private final CySwingApplication swingApplication;
 
        /**
         * Initializes a new instance of <code>AnalysisExecutor</code>.
@@ -78,10 +86,12 @@
         * @param aAnalyzer
         *            <code>NetworkAnalyzer</code> instance to be started.
         */
-       public AnalysisExecutor(JFrame aDesktop, NetworkAnalyzer aAnalyzer, 
final CyNetworkViewManager viewManager, final VisualStyleBuilder vsBuilder,
+       public AnalysisExecutor(final CySwingApplication swingApplication, 
final Window owner, final ResultPanelFactory resultPanelFactory, 
NetworkAnalyzer aAnalyzer, final CyNetworkViewManager viewManager, final 
VisualStyleBuilder vsBuilder,
                        final VisualMappingManager vmm) {
-               desktop = aDesktop;
+               this.resultPanelFactory = resultPanelFactory;
                analyzer = aAnalyzer;
+               this.owner = owner;
+               this.swingApplication = swingApplication;
                
                this.viewManager = viewManager;
                this.vmm = vmm;
@@ -90,7 +100,7 @@
                listeners = new ArrayList<AnalysisListener>();
                showDialog = true;
                int maxProgress = analyzer.getMaxProgress();
-               monitor = new ProgressMonitor(aDesktop, Messages.DT_ANALYZING, 
null, 0, maxProgress);
+               monitor = new ProgressMonitor(owner, Messages.DT_ANALYZING, 
null, 0, maxProgress);
                monitor.setMillisToDecideToPopup(1500);
                timer = new Timer(1000, this);
        }
@@ -120,7 +130,7 @@
                        monitor.close();
                        if (showDialog) {
                                try {
-                                       AnalysisDialog d = new 
AnalysisDialog(desktop, analyzer.getStats(), analyzer, viewManager, vsBuilder, 
vmm);
+                                       AnalysisResultPanel d = new 
AnalysisResultPanel(swingApplication, owner, resultPanelFactory, 
analyzer.getStats(), analyzer, viewManager, vsBuilder, vmm);
                                        d.setVisible(true);
                                } catch (InnerException ex) {
                                        // NetworkAnalyzer internal error
@@ -193,11 +203,6 @@
        private Timer timer;
 
        /**
-        * Parent (owner) of the dialog(s) displayed.
-        */
-       private JFrame desktop;
-
-       /**
         * Flag indicating if an analysis results dialog must be displayed 
after the
         * analysis is complete.
         */

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/AnalyzeNetworkAction.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/AnalyzeNetworkAction.java
    2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/AnalyzeNetworkAction.java
    2012-07-12 02:51:18 UTC (rev 29851)
@@ -38,6 +38,8 @@
 import de.mpg.mpi_inf.bioinf.netanalyzer.data.NetworkInterpretation;
 import de.mpg.mpi_inf.bioinf.netanalyzer.data.NetworkStatus;
 import de.mpg.mpi_inf.bioinf.netanalyzer.ui.InterpretationDialog;
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.ResultPanel;
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.ResultPanelFactory;
 import de.mpg.mpi_inf.bioinf.netanalyzer.ui.Utils;
 import de.mpg.mpi_inf.bioinf.netanalyzer.ui.VisualStyleBuilder;
 
@@ -53,17 +55,19 @@
        private final CyNetworkViewManager viewManager;
        private final VisualMappingManager vmm;
        private final VisualStyleBuilder vsBuilder;
+       private final ResultPanelFactory resultPanelFactory;
 
        /**
         * Initializes a new instance of <code>AnalyzeNetworkAction</code>.
         */
        public AnalyzeNetworkAction(CyApplicationManager 
appMgr,CySwingApplication swingApp, final CyNetworkViewManager viewManager, 
final VisualStyleBuilder vsBuilder,
                        final VisualMappingManager vmm, final Map<String, 
String> configProps,
-                       final CyNetworkViewManager networkViewManager) {
+                       final CyNetworkViewManager networkViewManager, final 
ResultPanelFactory resultPanelFactory) {
                super(Messages.AC_ANALYZE,appMgr,swingApp, configProps, 
networkViewManager);
                this.viewManager = viewManager;
                this.vmm = vmm;
                this.vsBuilder = vsBuilder;
+               this.resultPanelFactory = resultPanelFactory;
                
                setPreferredMenu(NetworkAnalyzer.PARENT_MENU + 
Messages.AC_MENU_ANALYSIS);
        }
@@ -116,7 +120,7 @@
                        } else {
                                analyzer = new UndirNetworkAnalyzer(aNetwork, 
aNodeSet, interpr);
                        }
-                       return new AnalysisExecutor(swingApp.getJFrame(), 
analyzer, viewManager, vsBuilder, vmm);
+                       return new AnalysisExecutor(swingApp, 
swingApp.getJFrame(), resultPanelFactory, analyzer, viewManager, vsBuilder, 
vmm);
                } catch (IllegalArgumentException ex) {
                        
Utils.showInfoBox(swingApp.getJFrame(),Messages.DT_INFO, 
Messages.SM_NETWORKEMPTY);
                        return null;

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/CyActivator.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/CyActivator.java
     2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/CyActivator.java
     2012-07-12 02:51:18 UTC (rev 29851)
@@ -21,6 +21,7 @@
 import org.cytoscape.io.read.CyNetworkReaderManager;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.service.util.AbstractCyActivator;
+import org.cytoscape.service.util.CyServiceRegistrar;
 import org.cytoscape.task.create.NewNetworkSelectedNodesAndEdgesTaskFatory;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.view.vizmap.VisualMappingFunctionFactory;
@@ -29,6 +30,8 @@
 import org.cytoscape.work.swing.DialogTaskManager;
 import org.osgi.framework.BundleContext;
 
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.ResultPanel;
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.ResultPanelFactory;
 import de.mpg.mpi_inf.bioinf.netanalyzer.ui.VisualStyleBuilder;
 
 
@@ -42,6 +45,7 @@
        @Override
        public void start(BundleContext bc) {
 
+               CyServiceRegistrar cyServiceRegistrarServiceRef = 
getService(bc,CyServiceRegistrar.class);
                CyApplicationManager cyApplicationManagerServiceRef = 
getService(bc,CyApplicationManager.class);
                CySwingApplication cySwingApplicationServiceRef = 
getService(bc,CySwingApplication.class);
                CyNetworkManager cyNetworkManagerServiceRef = 
getService(bc,CyNetworkManager.class);
@@ -58,6 +62,9 @@
                NewNetworkSelectedNodesAndEdgesTaskFatory 
newNetworkSelectedNodesEdgesTaskFactoryServiceRef = 
getService(bc,NewNetworkSelectedNodesAndEdgesTaskFatory.class);
                DialogTaskManager taskManager = getService(bc, 
DialogTaskManager.class);
                
+               final ResultPanelFactory resultPanel = new 
ResultPanelFactory(cyServiceRegistrarServiceRef);
+               registerAllServices(bc, resultPanel, new Properties());
+               
                // FIXME refactor this code
                Plugin plugin = new Plugin(cySwingApplicationServiceRef);
                
@@ -75,9 +82,9 @@
                analyzerActionProps.put(IN_TOOL_BAR,"true");
                analyzerActionProps.put(TOOLTIP,"Analyze Network");
                analyzerActionProps.put(ENABLE_FOR, "network");
-               AnalyzeNetworkAction analyzeNetworkAction = new 
AnalyzeNetworkAction(cyApplicationManagerServiceRef,cySwingApplicationServiceRef,
 viewManagerServiceRef, vsBuilder, vmmServiceRef, analyzerActionProps, 
viewManagerServiceRef);
+               AnalyzeNetworkAction analyzeNetworkAction = new 
AnalyzeNetworkAction(cyApplicationManagerServiceRef,cySwingApplicationServiceRef,
 viewManagerServiceRef, vsBuilder, vmmServiceRef, analyzerActionProps, 
viewManagerServiceRef, resultPanel);
 
-               LoadNetstatsAction loadNetstatsAction = new 
LoadNetstatsAction(cyApplicationManagerServiceRef,cySwingApplicationServiceRef, 
viewManagerServiceRef, vsBuilder, vmmServiceRef);
+               LoadNetstatsAction loadNetstatsAction = new 
LoadNetstatsAction(cyApplicationManagerServiceRef,cySwingApplicationServiceRef, 
viewManagerServiceRef, vsBuilder, vmmServiceRef, resultPanel);
                MapParameterAction mapParameterAction = new 
MapParameterAction(cyApplicationManagerServiceRef,cySwingApplicationServiceRef, 
viewManagerServiceRef, vsBuilder, vmmServiceRef, analyzeNetworkAction);
                
                AboutAction aboutAction = new 
AboutAction(cyApplicationManagerServiceRef,cySwingApplicationServiceRef);
@@ -93,6 +100,8 @@
                RemoveSelfLoopsAction removeSelfLoopsAction = new 
RemoveSelfLoopsAction(cyApplicationManagerServiceRef,cySwingApplicationServiceRef,cyNetworkManagerServiceRef);
                SettingsAction settingsAction = new 
SettingsAction(cyApplicationManagerServiceRef,cySwingApplicationServiceRef);
                
+               
+               
                registerService(bc,analyzeNetworkAction,CyAction.class, new 
Properties());
                registerService(bc,analyzeSubsetAction,CyAction.class, new 
Properties());
                registerService(bc,batchAnalysisAction,CyAction.class, new 
Properties());

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/LoadNetstatsAction.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/LoadNetstatsAction.java
      2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/LoadNetstatsAction.java
      2012-07-12 02:51:18 UTC (rev 29851)
@@ -18,6 +18,7 @@
 package de.mpg.mpi_inf.bioinf.netanalyzer;
 
 import java.awt.Frame;
+import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.io.File;
 import java.io.IOException;
@@ -34,7 +35,8 @@
 import de.mpg.mpi_inf.bioinf.netanalyzer.data.Messages;
 import de.mpg.mpi_inf.bioinf.netanalyzer.data.NetworkStats;
 import de.mpg.mpi_inf.bioinf.netanalyzer.data.io.StatsSerializer;
-import de.mpg.mpi_inf.bioinf.netanalyzer.ui.AnalysisDialog;
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.AnalysisResultPanel;
+import de.mpg.mpi_inf.bioinf.netanalyzer.ui.ResultPanelFactory;
 import de.mpg.mpi_inf.bioinf.netanalyzer.ui.Utils;
 import de.mpg.mpi_inf.bioinf.netanalyzer.ui.VisualStyleBuilder;
 
@@ -50,16 +52,18 @@
        private final CyNetworkViewManager viewManager;
        private final VisualMappingManager vmm;
        private final VisualStyleBuilder vsBuilder;
+       private final ResultPanelFactory resultPanelFactory;
 
        /**
         * Initializes a new instance of <code>LoadNetstatsAction</code>.
         */
        public LoadNetstatsAction(CyApplicationManager 
appMgr,CySwingApplication swingApp, final CyNetworkViewManager viewManager, 
final VisualStyleBuilder vsBuilder,
-                       final VisualMappingManager vmm) {
+                       final VisualMappingManager vmm, final 
ResultPanelFactory resultPanelFactory) {
                super(Messages.AC_LOAD,appMgr,swingApp);
                this.viewManager = viewManager;
                this.vmm = vmm;
                this.vsBuilder = vsBuilder;
+               this.resultPanelFactory = resultPanelFactory;
                setPreferredMenu(NetworkAnalyzer.PARENT_MENU + 
Messages.AC_MENU_ANALYSIS);
        }
 
@@ -72,7 +76,7 @@
        public void actionPerformed(ActionEvent e) {
                try {
                        final Frame desktop = swingApp.getJFrame();
-                       final JFileChooser dialog = 
AnalysisDialog.netstatsDialog;
+                       final JFileChooser dialog = 
AnalysisResultPanel.netstatsDialog;
                        final int openIt = dialog.showOpenDialog(desktop);
                        if (openIt == JFileChooser.APPROVE_OPTION) {
                                openNetstats(desktop, dialog.getSelectedFile());
@@ -97,10 +101,10 @@
         * @param aFile
         *            Network statistics file to be open.
         */
-       public void openNetstats(Frame owner, File aFile) {
+       public void openNetstats(Window owner, File aFile) {
                try {
                        final NetworkStats stats = StatsSerializer.load(aFile);
-                       final AnalysisDialog d = new AnalysisDialog(owner, 
stats, null, viewManager, vsBuilder, vmm);
+                       final AnalysisResultPanel d = new 
AnalysisResultPanel(swingApp, owner, resultPanelFactory, stats, null, 
viewManager, vsBuilder, vmm);
                        d.setVisible(true);
                } catch (IOException ex) {
                        // FileNotFoundException, IOException

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/data/settings/PluginSettings.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/data/settings/PluginSettings.java
    2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/data/settings/PluginSettings.java
    2012-07-12 02:51:18 UTC (rev 29851)
@@ -48,7 +48,7 @@
         * Checks if expandable chart panels must be used.
         * 
         * @return <code>true</code> if {@link 
de.mpg.mpi_inf.bioinf.netanalyzer.ui.ChartExpandablePanel} must be
-        *         used as building blocks for {@link 
de.mpg.mpi_inf.bioinf.netanalyzer.ui.AnalysisDialog};
+        *         used as building blocks for {@link 
de.mpg.mpi_inf.bioinf.netanalyzer.ui.AnalysisResultPanel};
         *         <code>false</code> otherwise.
         */
        public boolean getExpandable() {

Deleted: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisDialog.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisDialog.java
       2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisDialog.java
       2012-07-12 02:51:18 UTC (rev 29851)
@@ -1,342 +0,0 @@
-/*
- * Copyright (c) 2006, 2007, 2008, 2010, Max Planck Institute for Informatics, 
Saarbruecken, Germany.
- *
- * This file is part of NetworkAnalyzer.
- * 
- * NetworkAnalyzer is free software: you can redistribute it and/or modify it 
under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation, either version 3 of 
the License, or (at your option)
- * any later version.
- * 
- * NetworkAnalyzer is distributed in the hope that it will be useful, but 
WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
See the GNU Lesser General Public License
- * for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License 
along with NetworkAnalyzer. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-package de.mpg.mpi_inf.bioinf.netanalyzer.ui;
-
-import java.awt.Container;
-import java.awt.FlowLayout;
-import java.awt.Frame;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowEvent;
-import java.awt.event.WindowListener;
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JFileChooser;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
-
-import org.cytoscape.model.CyNetwork;
-import org.cytoscape.view.model.CyNetworkViewManager;
-import org.cytoscape.view.vizmap.VisualMappingManager;
-
-import de.mpg.mpi_inf.bioinf.netanalyzer.CyNetworkUtils;
-import de.mpg.mpi_inf.bioinf.netanalyzer.InnerException;
-import de.mpg.mpi_inf.bioinf.netanalyzer.NetworkAnalyzer;
-import de.mpg.mpi_inf.bioinf.netanalyzer.Plugin;
-import de.mpg.mpi_inf.bioinf.netanalyzer.data.ComplexParam;
-import de.mpg.mpi_inf.bioinf.netanalyzer.data.Decorators;
-import de.mpg.mpi_inf.bioinf.netanalyzer.data.Messages;
-import de.mpg.mpi_inf.bioinf.netanalyzer.data.NetworkStats;
-import de.mpg.mpi_inf.bioinf.netanalyzer.data.io.SettingsSerializer;
-import de.mpg.mpi_inf.bioinf.netanalyzer.data.io.StatsSerializer;
-import de.mpg.mpi_inf.bioinf.netanalyzer.data.settings.PluginSettings;
-import de.mpg.mpi_inf.bioinf.netanalyzer.dec.Decorator;
-
-/**
- * Dialog presenting results of network analysis.
- * 
- * @author Yassen Assenov
- */
-public class AnalysisDialog extends JDialog implements ActionListener, 
WindowListener {
-
-       private final CyNetworkViewManager viewManager;
-       private final VisualMappingManager vmm;
-       private final VisualStyleBuilder vsBuilder;
-       
-       /**
-        * Dialog window for choosing a filename when saving and loading 
.netstats files.
-        */
-       public static JFileChooser netstatsDialog = new JFileChooser();
-
-       static {
-               
netstatsDialog.addChoosableFileFilter(SupportedExtensions.netStatsFilter);
-       }
-
-       private final Frame aOwner;
-       
-       /**
-        * Initializes a new instance of <code>AnalysisDialog</code>.
-        * <p>
-        * The dialog created is non-modal and has a title &quot;Network 
Analysis - [name]&quot;, where [name] is
-        * the name of the network, as saved in the <code>aStats</code> 
parameter. The constructor creates and
-        * lays out all the controls of the dialog. It also positions the 
window according to its parent, so no
-        * subsequent calls to <code>pack</code> or 
<code>setLocation(...)</code> are necessary.
-        * </p>
-        * 
-        * @param aOwner
-        *            The <code>Frame</code> from which this dialog is 
displayed.
-        * @param aStats
-        *            Network statistics to be visualized.
-        * @param aAnalyzer
-        *            Analyzer class that performed the topological analysis. 
Set this to <code>null</code> if the
-        *            results were loaded from a file rather than just computed.
-        */
-       public AnalysisDialog(Frame aOwner, NetworkStats aStats, 
NetworkAnalyzer aAnalyzer, final CyNetworkViewManager viewManager, final 
VisualStyleBuilder vsBuilder,
-                       final VisualMappingManager vmm) {
-               super(aOwner, Messages.DT_ANALYSIS + aStats.getTitle(), false);
-               this.aOwner = aOwner;
-               this.viewManager = viewManager;
-               this.vmm = vmm;
-               this.vsBuilder = vsBuilder;
-
-               stats = aStats;
-               boolean paramMapping = false;
-               if (aAnalyzer != null) {
-                       final PluginSettings s = 
SettingsSerializer.getPluginSettings();
-                       paramMapping = aAnalyzer.isGlobal() && 
(s.getUseNodeAttributes() || s.getUseEdgeAttributes());
-                       saved = false;
-               } else {
-                       saved = true;
-               }
-               initControls(paramMapping);
-               addWindowListener(this);
-
-               pack();
-               setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
-               setResizable(false);
-               setLocationRelativeTo(aOwner);
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
-        */
-       public void actionPerformed(ActionEvent e) {
-               final Object src = e.getSource();
-               if (src == saveButton) {
-                       saveNetstats();
-               } else if (src == visualizeButton) {
-                       visualizeParameter();
-               }
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
java.awt.event.WindowListener#windowActivated(java.awt.event.WindowEvent)
-        */
-       public void windowActivated(WindowEvent e) {
-               // Event is not processed
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
java.awt.event.WindowListener#windowDeactivated(java.awt.event.WindowEvent)
-        */
-       public void windowDeactivated(WindowEvent e) {
-               // Event is not processed
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
java.awt.event.WindowListener#windowOpened(java.awt.event.WindowEvent)
-        */
-       public void windowOpened(WindowEvent e) {
-               // Event is not processed
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
java.awt.event.WindowListener#windowClosing(java.awt.event.WindowEvent)
-        */
-       public void windowClosing(WindowEvent e) {
-               if (!saved) {
-                       int choice = JOptionPane.showConfirmDialog(this, 
Messages.SM_CLOSEWARN, Messages.DT_CLOSEWARN,
-                                       JOptionPane.YES_NO_OPTION, 
JOptionPane.WARNING_MESSAGE);
-                       if (choice == JOptionPane.NO_OPTION) {
-                               return;
-                       }
-               }
-               setVisible(false);
-               dispose();
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
java.awt.event.WindowListener#windowClosed(java.awt.event.WindowEvent)
-        */
-       public void windowClosed(WindowEvent e) {
-               // Event is not processed
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
java.awt.event.WindowListener#windowIconified(java.awt.event.WindowEvent)
-        */
-       public void windowIconified(WindowEvent e) {
-               // Event is not processed
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see 
java.awt.event.WindowListener#windowDeiconified(java.awt.event.WindowEvent)
-        */
-       public void windowDeiconified(WindowEvent e) {
-               // Event is not processed
-       }
-
-       /**
-        * Creates and lays out the controls inside this dialog.
-        * <p>
-        * This method is called upon initialization only.
-        * </p>
-        */
-       private void initControls(boolean enableParameterMapping) {
-               final boolean useExpandable = 
SettingsSerializer.getPluginSettings().getExpandable();
-               final Container contentPane = getContentPane();
-               contentPane.setLayout(new BoxLayout(contentPane, 
BoxLayout.Y_AXIS));
-               final JTabbedPane tabs = useExpandable ? null : new 
JTabbedPane();
-
-               final JComponent simpleStatsPanel = new SimpleStatsPanel(stats);
-               if (useExpandable) {
-                       
simpleStatsPanel.setBorder(BorderFactory.createTitledBorder(Messages.DI_SIMPLEPARAMS));
-                       contentPane.add(simpleStatsPanel);
-               } else {
-                       contentPane.add(tabs);
-                       tabs.addTab(Messages.DI_SIMPLEPARAMS, simpleStatsPanel);
-               }
-
-               final String[] complexNames = stats.getComputedComplex();
-               for (int i = 0; i < complexNames.length; ++i) {
-                       final String id = complexNames[i];
-                       final ComplexParam cp = stats.getComplex(id);
-                       final String typeName = cp.getClass().getSimpleName();
-                       try {
-                               final Class<?> visClass = 
Plugin.getVisualizerClass(typeName);
-                               final Constructor<?> con = 
visClass.getConstructors()[0];
-                               final Object[] conParams = new Object[] { cp, 
SettingsSerializer.getDefault(id) };
-                               ComplexParamVisualizer v = 
(ComplexParamVisualizer) con.newInstance(conParams);
-                               final Decorator[] decs = Decorators.get(id);
-                               if (useExpandable) {
-                                       contentPane.add(new 
ChartExpandablePanel(this, id, v, (i == 0), decs));
-                               } else {
-                                       tabs.addTab(v.getTitle(), new 
ChartDisplayPanel(this, id, v, decs));
-                               }
-                       } catch (Exception ex) {
-                               throw new InnerException(ex);
-                       }
-               }
-
-               contentPane.add(Box.createVerticalStrut(Utils.BORDER_SIZE));
-               saveButton = new JButton(Messages.DI_SAVESTATISTICS);
-               saveButton.addActionListener(this);
-               visualizeButton = new JButton(Messages.DI_VISUALIZEPARAMETER);
-               visualizeButton.setEnabled(false);
-               visualizeButton.addActionListener(this);
-               visualizeButton.setEnabled(enableParameterMapping);
-               JPanel buttonPane = new JPanel(new 
FlowLayout(FlowLayout.CENTER, Utils.BORDER_SIZE, 0));
-               Utils.equalizeSize(saveButton, visualizeButton);
-               buttonPane.add(saveButton);
-               buttonPane.add(Box.createHorizontalStrut(Utils.BORDER_SIZE * 
2));
-               buttonPane.add(visualizeButton);
-               contentPane.add(buttonPane);
-               contentPane.add(Box.createVerticalStrut(Utils.BORDER_SIZE));
-       }
-
-       /**
-        * Displays a dialog prompting to save the network analysis in a 
<code>.netstats</code> file.
-        */
-       private void saveNetstats() {
-               int saveIt = netstatsDialog.showSaveDialog(this);
-               if (saveIt == JFileChooser.APPROVE_OPTION) {
-                       try {
-                               String fileName = 
netstatsDialog.getSelectedFile().getAbsolutePath();
-                               Utils.removeSelectedFile(netstatsDialog);
-                               if 
(!SupportedExtensions.netStatsFilter.hasExtension(fileName)) {
-                                       fileName = 
SupportedExtensions.netStatsFilter.appendExtension(fileName);
-                               }
-                               if (Utils.canSave(new File(fileName), this)) {
-                                       StatsSerializer.save(stats, fileName);
-                                       saved = true;
-                               }
-                       } catch (IOException ex) {
-                               // Could not save file
-                               Utils.showErrorBox(this, Messages.DT_IOERROR, 
Messages.SM_OERROR);
-                       } catch (SecurityException ex) {
-                               // Could not save file - security manager has 
denied access
-                               Utils.showErrorBox(this, Messages.DT_SECERROR, 
Messages.SM_SECERROR2);
-                       }
-               } else if (saveIt == JFileChooser.ERROR_OPTION) {
-                       Utils.showErrorBox(this, Messages.DT_GUIERROR, 
Messages.SM_GUIERROR);
-               }
-       }
-
-       /**
-        * Opens the &quot;Map Parameters to Visual Styles&quot; dialog when 
the &quot;Map Parameters to Visual
-        * Styles&quot; button is activated.
-        */
-       private void visualizeParameter() {
-               CyNetwork network = stats.getNetwork();
-               if (network != null) {
-                       final String[][] nodeAttr = 
CyNetworkUtils.getComputedNodeAttributes(network);
-                       final String[][] edgeAttr = 
CyNetworkUtils.getComputedEdgeAttributes(network);
-                       if ((nodeAttr[0].length > 0) || (nodeAttr[1].length > 
0) || (edgeAttr[0].length > 0)
-                                       || (edgeAttr[1].length > 0)) {
-                               final MapParameterDialog d = new 
MapParameterDialog(aOwner, network, viewManager, vsBuilder, vmm,
-                                               nodeAttr, edgeAttr);
-                               d.setVisible(true);
-                               return;
-                       }
-               }
-               // Could not locate network - display an error message to the 
user
-               Utils.showErrorBox(this, Messages.DT_WRONGDATA, 
Messages.SM_VISUALIZEERROR);
-               visualizeButton.setEnabled(false);
-       }
-
-       /**
-        * Unique ID for this version of this class. It is used in 
serialization.
-        */
-       private static final long serialVersionUID = 5759174742857183439L;
-
-       /**
-        * Flag indicating if the network analysis results were successfully 
saved to a file.
-        */
-       private boolean saved;
-
-       /**
-        * &quot;Save Statistics&quot; button.
-        */
-       private JButton saveButton;
-
-       /**
-        * &quot;Visualize Parameters&quot; button.
-        */
-       private JButton visualizeButton;
-
-       /**
-        * Network parameters instance displayed in this dialog.
-        */
-       private NetworkStats stats;
-
-}

Copied: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisResultPanel.java
 (from rev 29752, 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisDialog.java)
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisResultPanel.java
                          (rev 0)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/AnalysisResultPanel.java
  2012-07-12 02:51:18 UTC (rev 29851)
@@ -0,0 +1,329 @@
+/*
+ * Copyright (c) 2006, 2007, 2008, 2010, Max Planck Institute for Informatics, 
Saarbruecken, Germany.
+ *
+ * This file is part of NetworkAnalyzer.
+ * 
+ * NetworkAnalyzer is free software: you can redistribute it and/or modify it 
under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, either version 3 of 
the License, or (at your option)
+ * any later version.
+ * 
+ * NetworkAnalyzer is distributed in the hope that it will be useful, but 
WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
See the GNU Lesser General Public License
+ * for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License 
along with NetworkAnalyzer. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+package de.mpg.mpi_inf.bioinf.netanalyzer.ui;
+
+import java.awt.Component;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.Window;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+
+import org.cytoscape.application.swing.CySwingApplication;
+import org.cytoscape.application.swing.CytoPanel;
+import org.cytoscape.application.swing.CytoPanelName;
+import org.cytoscape.application.swing.CytoPanelState;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.view.model.CyNetworkViewManager;
+import org.cytoscape.view.vizmap.VisualMappingManager;
+
+import de.mpg.mpi_inf.bioinf.netanalyzer.CyNetworkUtils;
+import de.mpg.mpi_inf.bioinf.netanalyzer.InnerException;
+import de.mpg.mpi_inf.bioinf.netanalyzer.NetworkAnalyzer;
+import de.mpg.mpi_inf.bioinf.netanalyzer.Plugin;
+import de.mpg.mpi_inf.bioinf.netanalyzer.data.ComplexParam;
+import de.mpg.mpi_inf.bioinf.netanalyzer.data.Decorators;
+import de.mpg.mpi_inf.bioinf.netanalyzer.data.Messages;
+import de.mpg.mpi_inf.bioinf.netanalyzer.data.NetworkStats;
+import de.mpg.mpi_inf.bioinf.netanalyzer.data.io.SettingsSerializer;
+import de.mpg.mpi_inf.bioinf.netanalyzer.data.io.StatsSerializer;
+import de.mpg.mpi_inf.bioinf.netanalyzer.data.settings.PluginSettings;
+import de.mpg.mpi_inf.bioinf.netanalyzer.dec.Decorator;
+
+/**
+ * Dialog presenting results of network analysis.
+ * 
+ * @author Yassen Assenov
+ */
+public class AnalysisResultPanel extends JPanel implements ActionListener {
+
+       private ResultPanel resultPanel;
+       private final ResultPanelFactory resultPanelFactory;
+       
+       private final CyNetworkViewManager viewManager;
+       private final VisualMappingManager vmm;
+       private final VisualStyleBuilder vsBuilder;
+               
+       /**
+        * Dialog window for choosing a filename when saving and loading 
.netstats files.
+        */
+       public static JFileChooser netstatsDialog = new JFileChooser();
+
+       static {
+               
netstatsDialog.addChoosableFileFilter(SupportedExtensions.netStatsFilter);
+       }
+
+       private final Window aOwner;
+
+       private CySwingApplication swingApplication;
+       
+       /**
+        * Initializes a new instance of <code>AnalysisDialog</code>.
+        * <p>
+        * The dialog created is non-modal and has a title &quot;Network 
Analysis - [name]&quot;, where [name] is
+        * the name of the network, as saved in the <code>aStats</code> 
parameter. The constructor creates and
+        * lays out all the controls of the dialog. It also positions the 
window according to its parent, so no
+        * subsequent calls to <code>pack</code> or 
<code>setLocation(...)</code> are necessary.
+        * </p>
+        * 
+        * @param aOwner
+        *            The <code>Frame</code> from which this dialog is 
displayed.
+        * @param aStats
+        *            Network statistics to be visualized.
+        * @param aAnalyzer
+        *            Analyzer class that performed the topological analysis. 
Set this to <code>null</code> if the
+        *            results were loaded from a file rather than just computed.
+        */
+       public AnalysisResultPanel(final CySwingApplication swingApplication, 
Window aOwner, final ResultPanelFactory panelFactory, NetworkStats aStats, 
NetworkAnalyzer aAnalyzer,
+                       final CyNetworkViewManager viewManager, final 
VisualStyleBuilder vsBuilder, final VisualMappingManager vmm) {
+               this.aOwner = aOwner;
+               this.viewManager = viewManager;
+               this.vmm = vmm;
+               this.vsBuilder = vsBuilder;
+               this.swingApplication = swingApplication;
+               this.resultPanelFactory =panelFactory;
+
+               this.stats = aStats;
+               boolean paramMapping = false;
+               if (aAnalyzer != null) {
+                       final PluginSettings s = 
SettingsSerializer.getPluginSettings();
+                       paramMapping = aAnalyzer.isGlobal() && 
(s.getUseNodeAttributes() || s.getUseEdgeAttributes());
+                       saved = false;
+               } else {
+                       saved = true;
+               }
+               initControls(paramMapping);
+               final CyNetwork network = stats.getNetwork();
+               final String networkTitle = 
network.getRow(network).get(CyNetwork.NAME, String.class);
+               resultPanel = panelFactory.registerPanel(this, "Network 
Statistics of " + networkTitle);
+               
+               final CytoPanel cytoPanel = 
swingApplication.getCytoPanel(CytoPanelName.EAST);
+               
+               int panelCount = cytoPanel.getCytoPanelComponentCount();
+               for(int i=0; i<panelCount; i++) {
+                       Component panel = cytoPanel.getComponentAt(i);
+                       if(panel.equals(resultPanel)) {
+                               cytoPanel.setSelectedIndex(i);
+                               break;
+                       }
+               }
+               
+               final CytoPanelState curState = cytoPanel.getState();
+               if (curState == CytoPanelState.HIDE)
+                       cytoPanel.setState(CytoPanelState.FLOAT);
+       }
+
+       @Override
+       public void actionPerformed(ActionEvent e) {
+               final Object src = e.getSource();
+               if (src == saveButton) {
+                       saveNetstats();
+               } else if (src == visualizeButton) {
+                       visualizeParameter();
+               }
+       }
+
+
+       public void panelClosing() {
+               if (!saved) {
+                       int choice = JOptionPane.showConfirmDialog(this, 
Messages.SM_CLOSEWARN, Messages.DT_CLOSEWARN,
+                                       JOptionPane.YES_NO_OPTION, 
JOptionPane.WARNING_MESSAGE);
+                       if (choice == JOptionPane.NO_OPTION)
+                               return;
+               }
+               
+               // Close this panel
+               
+               final CytoPanel cytoPanel = 
swingApplication.getCytoPanel(CytoPanelName.EAST);
+               int panelCount = cytoPanel.getCytoPanelComponentCount();
+               for(int i=0; i<panelCount; i++) {
+                       Component panel = cytoPanel.getComponentAt(i);
+                       if(panel.equals(resultPanel)) {
+                               resultPanelFactory.removePanel(resultPanel);
+                               resultPanel = null;
+                               break;
+                       }
+               }
+//             dispose();
+       }
+
+       
+
+       /**
+        * Creates and lays out the controls inside this dialog.
+        * <p>
+        * This method is called upon initialization only.
+        * </p>
+        */
+       private void initControls(boolean enableParameterMapping) {
+               final boolean useExpandable = 
SettingsSerializer.getPluginSettings().getExpandable();
+               this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+               final JTabbedPane tabs = useExpandable ? null : new 
JTabbedPane();
+
+               final JComponent simpleStatsPanel = new SimpleStatsPanel(stats);
+               if (useExpandable) {
+                       
simpleStatsPanel.setBorder(BorderFactory.createTitledBorder(Messages.DI_SIMPLEPARAMS));
+                       this.add(simpleStatsPanel);
+               } else {
+                       this.add(tabs);
+                       tabs.addTab(Messages.DI_SIMPLEPARAMS, simpleStatsPanel);
+               }
+
+               final String[] complexNames = stats.getComputedComplex();
+               for (int i = 0; i < complexNames.length; ++i) {
+                       final String id = complexNames[i];
+                       final ComplexParam cp = stats.getComplex(id);
+                       final String typeName = cp.getClass().getSimpleName();
+                       try {
+                               final Class<?> visClass = 
Plugin.getVisualizerClass(typeName);
+                               final Constructor<?> con = 
visClass.getConstructors()[0];
+                               final Object[] conParams = new Object[] { cp, 
SettingsSerializer.getDefault(id) };
+                               ComplexParamVisualizer v = 
(ComplexParamVisualizer) con.newInstance(conParams);
+                               final Decorator[] decs = Decorators.get(id);
+                               if (useExpandable) {
+                                       this.add(new ChartExpandablePanel(this, 
id, v, (i == 0), decs));
+                               } else {
+                                       tabs.addTab(v.getTitle(), new 
ChartDisplayPanel(this, id, v, decs));
+                               }
+                       } catch (Exception ex) {
+                               throw new InnerException(ex);
+                       }
+               }
+
+               this.add(Box.createVerticalStrut(Utils.BORDER_SIZE));
+               saveButton = new JButton(Messages.DI_SAVESTATISTICS);
+               saveButton.addActionListener(this);
+               visualizeButton = new JButton(Messages.DI_VISUALIZEPARAMETER);
+               visualizeButton.setEnabled(false);
+               visualizeButton.addActionListener(this);
+               visualizeButton.setEnabled(enableParameterMapping);
+               
+               closeButton = new JButton("Close Tab");
+               closeButton.addActionListener(new ActionListener() {
+                       
+                       @Override
+                       public void actionPerformed(ActionEvent arg0) {
+                               panelClosing();
+                       }
+               });
+               
+               JPanel buttonPane = new JPanel(new 
FlowLayout(FlowLayout.CENTER, Utils.BORDER_SIZE, 0));
+               Utils.equalizeSize(saveButton, visualizeButton);
+               buttonPane.add(saveButton);
+               buttonPane.add(Box.createHorizontalStrut(Utils.BORDER_SIZE * 
2));
+               buttonPane.add(visualizeButton);
+               buttonPane.add(closeButton);
+               this.add(buttonPane);
+               this.add(Box.createVerticalStrut(Utils.BORDER_SIZE));
+               
+               
+       }
+
+       /**
+        * Displays a dialog prompting to save the network analysis in a 
<code>.netstats</code> file.
+        */
+       private void saveNetstats() {
+               int saveIt = netstatsDialog.showSaveDialog(this);
+               if (saveIt == JFileChooser.APPROVE_OPTION) {
+                       try {
+                               String fileName = 
netstatsDialog.getSelectedFile().getAbsolutePath();
+                               Utils.removeSelectedFile(netstatsDialog);
+                               if 
(!SupportedExtensions.netStatsFilter.hasExtension(fileName)) {
+                                       fileName = 
SupportedExtensions.netStatsFilter.appendExtension(fileName);
+                               }
+                               if (Utils.canSave(new File(fileName), this)) {
+                                       StatsSerializer.save(stats, fileName);
+                                       saved = true;
+                               }
+                       } catch (IOException ex) {
+                               // Could not save file
+                               Utils.showErrorBox(this, Messages.DT_IOERROR, 
Messages.SM_OERROR);
+                       } catch (SecurityException ex) {
+                               // Could not save file - security manager has 
denied access
+                               Utils.showErrorBox(this, Messages.DT_SECERROR, 
Messages.SM_SECERROR2);
+                       }
+               } else if (saveIt == JFileChooser.ERROR_OPTION) {
+                       Utils.showErrorBox(this, Messages.DT_GUIERROR, 
Messages.SM_GUIERROR);
+               }
+       }
+
+       /**
+        * Opens the &quot;Map Parameters to Visual Styles&quot; dialog when 
the &quot;Map Parameters to Visual
+        * Styles&quot; button is activated.
+        */
+       private void visualizeParameter() {
+               CyNetwork network = stats.getNetwork();
+               if (network != null) {
+                       final String[][] nodeAttr = 
CyNetworkUtils.getComputedNodeAttributes(network);
+                       final String[][] edgeAttr = 
CyNetworkUtils.getComputedEdgeAttributes(network);
+                       if ((nodeAttr[0].length > 0) || (nodeAttr[1].length > 
0) || (edgeAttr[0].length > 0)
+                                       || (edgeAttr[1].length > 0)) {
+                               final MapParameterDialog d = new 
MapParameterDialog(aOwner, network, viewManager, vsBuilder, vmm,
+                                               nodeAttr, edgeAttr);
+                               d.setVisible(true);
+                               return;
+                       }
+               }
+               // Could not locate network - display an error message to the 
user
+               Utils.showErrorBox(this, Messages.DT_WRONGDATA, 
Messages.SM_VISUALIZEERROR);
+               visualizeButton.setEnabled(false);
+       }
+
+       /**
+        * Unique ID for this version of this class. It is used in 
serialization.
+        */
+       private static final long serialVersionUID = 5759174742857183439L;
+
+       /**
+        * Flag indicating if the network analysis results were successfully 
saved to a file.
+        */
+       private boolean saved;
+
+       /**
+        * &quot;Save Statistics&quot; button.
+        */
+       private JButton saveButton;
+
+       /**
+        * &quot;Visualize Parameters&quot; button.
+        */
+       private JButton visualizeButton;
+
+       /**
+        * Network parameters instance displayed in this dialog.
+        */
+       private NetworkStats stats;
+       
+       private JButton closeButton;
+}

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ChartDisplayPanel.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ChartDisplayPanel.java
    2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ChartDisplayPanel.java
    2012-07-12 02:51:18 UTC (rev 29851)
@@ -17,6 +17,7 @@
 
 package de.mpg.mpi_inf.bioinf.netanalyzer.ui;
 
+import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -30,6 +31,7 @@
 import javax.swing.Box;
 import javax.swing.BoxLayout;
 import javax.swing.JButton;
+import javax.swing.JComponent;
 import javax.swing.JDialog;
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
@@ -73,7 +75,7 @@
         * @param aVisualizer
         *            Visualizer of the complex parameter to be displayed.
         */
-       public ChartDisplayPanel(JDialog aOwner, String aID, 
ComplexParamVisualizer aVisualizer) {
+       public ChartDisplayPanel(Container aOwner, String aID, 
ComplexParamVisualizer aVisualizer) {
                this(aOwner, aID, aVisualizer, null);
        }
 
@@ -89,7 +91,7 @@
         * @param aDecorators
         *            Decorator instances for the complex parameter visualized.
         */
-       public ChartDisplayPanel(JDialog aOwner, String aID, 
ComplexParamVisualizer aVisualizer,
+       public ChartDisplayPanel(Container aOwner, String aID, 
ComplexParamVisualizer aVisualizer,
                        Decorator[] aDecorators) {
                super();
                visualizer = aVisualizer;
@@ -97,7 +99,7 @@
                decorators = aDecorators;
                originalParam = aVisualizer.getComplexParam();
                chart = aVisualizer.createControl();
-               ownerDialog = aOwner;
+               //ownerDialog = aOwner;
 
                initControls();
        }

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ChartExpandablePanel.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ChartExpandablePanel.java
 2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ChartExpandablePanel.java
 2012-07-12 02:51:18 UTC (rev 29851)
@@ -26,6 +26,7 @@
 import java.awt.event.MouseMotionListener;
 
 import javax.swing.BorderFactory;
+import javax.swing.JComponent;
 import javax.swing.JDialog;
 import javax.swing.border.TitledBorder;
 
@@ -54,7 +55,7 @@
         * @param aID ID of complex parameter to be displayed.
         * @param aVisualizer Visualizer of the complex parameter to be 
displayed.
         */
-       public ChartExpandablePanel(JDialog aOwner, String aID, 
ComplexParamVisualizer aVisualizer) {
+       public ChartExpandablePanel(JComponent aOwner, String aID, 
ComplexParamVisualizer aVisualizer) {
                this(aOwner, aID, aVisualizer, true, null);
        }
 
@@ -66,7 +67,7 @@
         * @param aVisualizer Visualizer of the complex parameter to be 
displayed.
         * @param aExpanded Flag indicating if the panel must be initially 
expanded or hidden.
         */
-       public ChartExpandablePanel(JDialog aOwner, String aID, 
ComplexParamVisualizer aVisualizer, boolean aExpanded) {
+       public ChartExpandablePanel(JComponent aOwner, String aID, 
ComplexParamVisualizer aVisualizer, boolean aExpanded) {
                this(aOwner, aID, aVisualizer, aExpanded, null);
        }
 
@@ -79,7 +80,7 @@
         * @param aExpanded Flag indicating if the panel must be initially 
expanded or hidden.
         * @param aDecorators Decorator instances for the complex parameter 
visualized.
         */
-       public ChartExpandablePanel(JDialog aOwner, String aID, 
ComplexParamVisualizer aVisualizer, boolean aExpanded,
+       public ChartExpandablePanel(JComponent aOwner, String aID, 
ComplexParamVisualizer aVisualizer, boolean aExpanded,
                Decorator[] aDecorators) {
                super(aOwner, aID, aVisualizer, aDecorators);
 

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/MapParameterDialog.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/MapParameterDialog.java
   2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/MapParameterDialog.java
   2012-07-12 02:51:18 UTC (rev 29851)
@@ -22,6 +22,7 @@
 import java.awt.FlowLayout;
 import java.awt.Frame;
 import java.awt.GridLayout;
+import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Collection;
@@ -78,7 +79,7 @@
         * @throws NullPointerException
         *             If <code>aNetwork</code> is <code>null</code>.
         */
-       public MapParameterDialog(Frame aOwner, CyNetwork aNetwork, final 
CyNetworkViewManager viewManager, final VisualStyleBuilder vsBuilder,
+       public MapParameterDialog(Window aOwner, CyNetwork aNetwork, final 
CyNetworkViewManager viewManager, final VisualStyleBuilder vsBuilder,
                        final VisualMappingManager vmm, String[][] aNodeAttr, 
String[][] aEdgeAttr) {
                super(aOwner, Messages.DT_MAPPARAM, true, aNetwork, aNodeAttr, 
aEdgeAttr);
 

Added: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ResultPanel.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ResultPanel.java
                          (rev 0)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ResultPanel.java
  2012-07-12 02:51:18 UTC (rev 29851)
@@ -0,0 +1,51 @@
+package de.mpg.mpi_inf.bioinf.netanalyzer.ui;
+
+import java.awt.Component;
+import java.awt.Dimension;
+
+import javax.swing.Icon;
+import javax.swing.JPanel;
+
+import org.cytoscape.application.swing.CytoPanelComponent;
+import org.cytoscape.application.swing.CytoPanelName;
+
+public class ResultPanel extends JPanel implements CytoPanelComponent {
+       
+       private static final Dimension DEF_PANEL_SIZE = new Dimension(650, 530);
+       
+       private final String panelTitle;
+       
+       public ResultPanel(final String panelTitle) {
+               this.setPreferredSize(DEF_PANEL_SIZE);
+               this.setSize(DEF_PANEL_SIZE);
+               this.setMinimumSize(DEF_PANEL_SIZE);
+               
+               this.panelTitle = panelTitle;
+       }
+       /**
+        * 
+        */
+       private static final long serialVersionUID = -7824516315016600756L;
+
+       @Override
+       public Component getComponent() {
+               return this;
+       }
+
+       @Override
+       public CytoPanelName getCytoPanelName() {
+               return CytoPanelName.EAST;
+       }
+
+       @Override
+       public String getTitle() {
+               return panelTitle;
+       }
+
+       @Override
+       public Icon getIcon() {
+               return null;
+       }
+
+
+}

Added: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ResultPanelFactory.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ResultPanelFactory.java
                           (rev 0)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/ResultPanelFactory.java
   2012-07-12 02:51:18 UTC (rev 29851)
@@ -0,0 +1,30 @@
+package de.mpg.mpi_inf.bioinf.netanalyzer.ui;
+
+import java.awt.Component;
+import java.util.Properties;
+
+import org.cytoscape.service.util.CyServiceRegistrar;
+
+public class ResultPanelFactory {
+
+       private final CyServiceRegistrar registrar;
+
+       public ResultPanelFactory(final CyServiceRegistrar registrar) {
+               this.registrar = registrar;
+       }
+
+       public ResultPanel registerPanel(final Component panel, final String 
panelTitle) {
+               final ResultPanel resPanel = new ResultPanel(panelTitle);
+               resPanel.add(panel);
+               registrar.registerAllServices(resPanel, new Properties());
+               
+               return resPanel;
+       }
+       
+       public void removePanel(ResultPanel panel) {
+               if(panel != null) {
+                       registrar.unregisterAllServices(panel);
+               }
+       }
+
+}

Modified: 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/VisualizeParameterDialog.java
===================================================================
--- 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/VisualizeParameterDialog.java
     2012-07-12 02:50:26 UTC (rev 29850)
+++ 
core3/impl/trunk/network-analyzer-impl/src/main/java/de/mpg/mpi_inf/bioinf/netanalyzer/ui/VisualizeParameterDialog.java
     2012-07-12 02:51:18 UTC (rev 29851)
@@ -17,7 +17,9 @@
 
 package de.mpg.mpi_inf.bioinf.netanalyzer.ui;
 
+import java.awt.Dialog;
 import java.awt.Frame;
+import java.awt.Window;
 
 import javax.swing.JDialog;
 
@@ -50,9 +52,9 @@
         *            first column contains all NetworkAnalyzer attributes, and 
the second one other
         *            attributes.
         */
-       protected VisualizeParameterDialog(Frame aOwner, String aName, boolean 
modal,
+       protected VisualizeParameterDialog(Window aOwner, String aName, boolean 
modal,
                        CyNetwork aNetwork, String[][] aNodeAttr, String[][] 
aEdgeAttr) {
-               super(aOwner, aName, modal);
+               super(aOwner, aName, Dialog.ModalityType.APPLICATION_MODAL);
                network = aNetwork;
                nodeAttr = aNodeAttr;
                edgeAttr = aEdgeAttr;

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to