This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 831f2050ffa6fcdcd17651ad22105c9d8e64f21f Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Nov 7 08:34:14 2016 +0100 Mise en place de SwingSession dans ObServe --- .../observe/application/swing/ObserveRunner.java | 2 + .../swing/ObserveSwingApplicationContext.java | 9 ++++ .../swing/ObserveSwingSessionHelper.java | 52 ++++++++++++++++++++++ .../swing/ui/content/ContentUIManager.java | 7 ++- 4 files changed, 69 insertions(+), 1 deletion(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java index 7ca2579..eb68ea4 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java @@ -586,6 +586,8 @@ public abstract class ObserveRunner extends ApplicationRunner { ObserveMainUI ui = uiHandler.initUI(context, config); UIHelper.setMainUIVisible(ui); + + context.getSwingSessionHelper().addComponent(ui, false); return ui; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java index 2e0dfb8..e52c4a2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java @@ -88,6 +88,7 @@ import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.En import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.LOCAL_DATABASE_BACKUP_TIMER; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.MAIN_UI; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.NODE_TO_RESELECT; +import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.OBSERVE_SWING_SESSION_HELPER; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.OPEN_DATA_MANAGER; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.SERVICE_MAIN_FACTORY; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.TEXT_GENERATOR; @@ -124,6 +125,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im DATA_CONTEXT("Data context", DataContext.class), CONTENT_UI_MANAGER("Content UI manager", ContentUIManager.class), DATA_SOURCES_MANAGER("Data sources manager", ObserveSwingApplicationDataSourcesManager.class), + OBSERVE_SWING_SESSION_HELPER("Swing session Helper", ObserveSwingSessionHelper.class), VALIDATION_CONTEXT("Validation context", ValidationContext.class), MAIN_UI("Main UI", ObserveMainUI.class), ACTIONS("Command line Actions", ObserveCLAction.class), @@ -220,6 +222,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im VALIDATORS.set(Lists.newArrayList(ValidateServiceUtils.getValidators())); SERVICE_MAIN_FACTORY.set(ObserveServiceMainFactory.get()); LOCAL_DATABASE_BACKUP_TIMER.set(new ScheduledThreadPoolExecutor(1)); + OBSERVE_SWING_SESSION_HELPER.set(new ObserveSwingSessionHelper(config.getSwingSessionFile())); referenceBinderEngine = new ReferenceBinderEngineSupplier().get(); scheduledFuture = getLocalDatabaseBackupTimer().scheduleAtFixedRate(new LocalDatabaseBackupTask(), 0, config.getBackupDelay(), TimeUnit.MINUTES); @@ -319,6 +322,10 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im return LOCAL_DATABASE_BACKUP_TIMER.get(); } + public ObserveSwingSessionHelper getSwingSessionHelper() { + return OBSERVE_SWING_SESSION_HELPER.get(); + } + //------------------------------------------- // - Write //------------------------------------------- @@ -406,6 +413,8 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im log.info("Closing swing application context " + this); } + getSwingSessionHelper().close(); + if (getConfig().isBackupAtClose()) { try { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingSessionHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingSessionHelper.java new file mode 100644 index 0000000..a27aa41 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingSessionHelper.java @@ -0,0 +1,52 @@ +package fr.ird.observe.application.swing; + +import jaxx.runtime.swing.session.SwingSession; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.awt.Component; +import java.io.Closeable; +import java.io.File; +import java.io.IOException; + +/** + * Created on 07/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.1 + */ +public class ObserveSwingSessionHelper implements Closeable { + + /** Logger */ + private static final Log log = LogFactory.getLog(ObserveSwingSessionHelper.class); + + private SwingSession session; + + public ObserveSwingSessionHelper(File file) { + session = new SwingSession(file, false); + } + + public void addComponent(Component c, boolean replace) { + session.add(c, replace); + } + + public void removeComponent(Component c) { + session.remove(c); + } + + public void save() { + try { + session.save(); + } catch (IOException e) { + if (log.isErrorEnabled()) { + log.error("Could not save swing session", e); + } + } + } + + @Override + public void close() { + save(); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java index da4d6b0..4cbebde 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java @@ -23,6 +23,7 @@ package fr.ird.observe.application.swing.ui.content; import com.google.common.collect.ImmutableSet; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ObserveSwingSessionHelper; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.content.impl.longline.LonglineDetailCompositionUI; @@ -302,6 +303,10 @@ public class ContentUIManager { try { content.open(); + ObserveSwingSessionHelper swingSessionHelper = ObserveSwingApplicationContext.get().getSwingSessionHelper(); + swingSessionHelper.addComponent((Component) content, true); + swingSessionHelper.save(); + } catch (Exception e) { UIHelper.handlingError(e); } finally { @@ -402,7 +407,7 @@ public class ContentUIManager { String contextValue = context instanceof Class ? ((Class) context).getName() : (context == null ? null : context.toString()); String key = getMappingKey(prefix, klass, contextValue); if (log.isDebugEnabled()) { - log.debug("Add key: "+key+" → "+contentClass.getName()); + log.debug("Add key: " + key + " → " + contentClass.getName()); } mapping.put(key, (Class<? extends ContentUI<?>>) contentClass); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.