Author: Christian Lopes
Date: 2011-05-31 14:20:37 -0700 (Tue, 31 May 2011)
New Revision: 25605

Modified:
   
core3/swing-application-impl/trunk/src/main/java/org/cytoscape/internal/view/CytoscapeDesktop.java
   
core3/swing-application-impl/trunk/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
   
core3/swing-application-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
Log:
Setting desktop size and network frames size/position to Cysession when 
SessionAboutToBeSaved event is triggered.

Modified: 
core3/swing-application-impl/trunk/src/main/java/org/cytoscape/internal/view/CytoscapeDesktop.java
===================================================================
--- 
core3/swing-application-impl/trunk/src/main/java/org/cytoscape/internal/view/CytoscapeDesktop.java
  2011-05-31 21:08:13 UTC (rev 25604)
+++ 
core3/swing-application-impl/trunk/src/main/java/org/cytoscape/internal/view/CytoscapeDesktop.java
  2011-05-31 21:20:37 UTC (rev 25605)
@@ -38,7 +38,11 @@
 import org.cytoscape.application.swing.CytoscapeShutdown;
 import org.cytoscape.application.swing.events.CytoPanelStateChangedListener;
 import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.property.session.Desktop;
+import org.cytoscape.property.session.DesktopSize;
 import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.session.events.SessionAboutToBeSavedEvent;
+import org.cytoscape.session.events.SessionAboutToBeSavedListener;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
@@ -56,6 +60,8 @@
 import javax.swing.JSplitPane;
 import javax.swing.JTabbedPane;
 import javax.swing.WindowConstants;
+
+import java.math.BigInteger;
 import java.util.Dictionary;
 import java.util.Properties;
 import org.cytoscape.work.swing.GUITaskManager;
@@ -67,7 +73,8 @@
 /**
  * The CytoscapeDesktop is the central Window for working with Cytoscape
  */
-public class CytoscapeDesktop extends JFrame implements CySwingApplication, 
CytoscapeStartListener {
+public class CytoscapeDesktop extends JFrame implements CySwingApplication, 
CytoscapeStartListener,
+                                                        
SessionAboutToBeSavedListener {
 
        private final static long serialVersionUID = 1202339866271348L;
 
@@ -383,8 +390,29 @@
        }
        
        // handle CytoscapeStartEvent
-       public void handleEvent(CytoscapeStartEvent e){
+       @Override
+       public void handleEvent(CytoscapeStartEvent e) {
                this.setVisible(true);
                this.toFront();
        }
+
+    @Override
+    public void handleEvent(SessionAboutToBeSavedEvent e) {
+        // Just save the desktop size
+        BigInteger w = BigInteger.valueOf(this.getWidth());
+        BigInteger h = BigInteger.valueOf(this.getHeight());
+        
+        DesktopSize size = new DesktopSize();
+        size.setWidth(w);
+        size.setHeight(h);
+        
+        Desktop desktop = e.getDesktop();
+        
+        if (desktop == null) {
+            desktop = new Desktop();
+            e.setDesktop(desktop);
+        }
+        
+        desktop.setDesktopSize(size);
+    }
 }

Modified: 
core3/swing-application-impl/trunk/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
===================================================================
--- 
core3/swing-application-impl/trunk/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
        2011-05-31 21:08:13 UTC (rev 25604)
+++ 
core3/swing-application-impl/trunk/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
        2011-05-31 21:20:37 UTC (rev 25605)
@@ -39,6 +39,7 @@
 import java.awt.Component;
 import java.awt.Dimension;
 import java.beans.PropertyVetoException;
+import java.math.BigInteger;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -57,9 +58,13 @@
 import org.cytoscape.model.events.RowSetMicroListener;
 import org.cytoscape.property.CyProperty;
 import org.cytoscape.property.session.Cysession;
+import org.cytoscape.property.session.Desktop;
 import org.cytoscape.property.session.NetworkFrame;
+import org.cytoscape.property.session.NetworkFrames;
 import org.cytoscape.session.CyApplicationManager;
 import org.cytoscape.session.CySession;
+import org.cytoscape.session.events.SessionAboutToBeSavedEvent;
+import org.cytoscape.session.events.SessionAboutToBeSavedListener;
 import org.cytoscape.session.events.SessionLoadedEvent;
 import org.cytoscape.session.events.SessionLoadedListener;
 import org.cytoscape.session.events.SetCurrentNetworkEvent;
@@ -87,7 +92,7 @@
  */
 public class NetworkViewManager extends InternalFrameAdapter implements 
NetworkViewAddedListener,
                NetworkViewAboutToBeDestroyedListener, 
SetCurrentNetworkViewListener, SetCurrentNetworkListener,
-               SessionLoadedListener {
+               SessionLoadedListener, SessionAboutToBeSavedListener {
 
        private static final Logger logger = 
LoggerFactory.getLogger(NetworkViewManager.class);
 
@@ -485,6 +490,34 @@
                }
        }
 
+    @Override
+    public void handleEvent(SessionAboutToBeSavedEvent e) {
+       // Save Network Frames
+       Desktop desktop = e.getDesktop();
+        
+        if (desktop == null) {
+            desktop = new Desktop();
+            e.setDesktop(desktop);
+        }
+        
+        NetworkFrames netFrames = new NetworkFrames();
+        desktop.setNetworkFrames(netFrames);
+       
+       JInternalFrame[] internalFrames = desktopPane.getAllFrames();
+       
+       for (JInternalFrame iframe : internalFrames) {
+               NetworkFrame nf = new NetworkFrame();
+               
+            nf.setFrameID(iframe.getTitle());
+            nf.setHeight(BigInteger.valueOf(iframe.getHeight()));
+            nf.setWidth(BigInteger.valueOf(iframe.getWidth()));
+            nf.setX(BigInteger.valueOf(iframe.getX()));
+            nf.setY(BigInteger.valueOf(iframe.getY()));
+               
+            netFrames.getNetworkFrame().add(nf);
+       }
+    }
+       
        private void updateNetworkTitle(Long networkModelID, String title) {
                JInternalFrame frame = 
presentationContainerMap.get(networkModelID);
 

Modified: 
core3/swing-application-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/swing-application-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
       2011-05-31 21:08:13 UTC (rev 25604)
+++ 
core3/swing-application-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
       2011-05-31 21:20:37 UTC (rev 25605)
@@ -293,6 +293,7 @@
        <osgi:service id="cytoscapeDesktopService" ref="cytoscapeDesktop">
                <osgi:interfaces>
                        
<value>org.cytoscape.application.swing.events.CytoscapeStartListener</value>
+                       
<value>org.cytoscape.session.events.SessionAboutToBeSavedListener</value>
                        
<value>org.cytoscape.application.swing.CySwingApplication</value>
                </osgi:interfaces>
        </osgi:service>

-- 
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