/* * Copyright (C) 2011 Nicolas Peransin. All rights reserved. * Use is subject to license terms. */ package org.mypsycho.swing.app.session; import java.awt.Container; import java.awt.Window; import java.io.IOException; import java.util.logging.Level; import org.mypsycho.swing.app.Application; import org.mypsycho.swing.app.View; import org.mypsycho.swing.app.ViewBehaviour; /** * Class for ... * <p>Details</p> * * @author Peransin Nicolas */ public class SessionBehaviour extends ViewBehaviour.Adapter { protected String sessionFilename(Window window) { if (window == null) { return null; } else { String name = window.getName(); return (name == null) ? null : name + ".session.xml"; } } protected void saveSession(Application app, Window window) { String filename = sessionFilename(window); if (filename == null) { return; } try { app.getContext().getSessionStorage().save(window, filename); } catch (IOException e) { app.exceptionThrown(Level.WARNING, "session", "Saving session failed", e); } } @Override public void onManage(View view) { Container parent = view.getRootPane().getParent(); if (!(parent instanceof Window)) { return; } Window window = (Window) parent; String filename = sessionFilename(window); if (filename != null) { Application app = view.getApplication(); try { app.getContext().getSessionStorage().restore(window, filename); } catch (Exception e) { String msg = String.format("Fail to restore session [%s]", filename); app.exceptionThrown(Level.WARNING, "session", msg, e); } } } /* * (non-Javadoc) * * @see com.psycho.swing.app.ViewBehaviour.Adapter#onRelease(com.psycho.swing.app.View) */ @Override public void onRelease(View view) { Container parent = view.getRootPane().getParent(); if (!(parent instanceof Window)) { return; } saveSession(view.getApplication(), (Window) parent); } }