r7 - in trunk: faxtomail-persistence faxtomail-persistence/src/main/java/com/franciaflex/faxtomail faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence faxtomail-persistence/src/main/resources faxtomail-persistence/src/main/resources/META-INF faxtomail-persistence/src/main/resources/META-INF/services faxtomail-persistence/src/main/resources/i18n faxtomail-service faxtomail-service/src/main/java/com/franciaflex/faxtomail/services faxtomail-service/src/main/java/com/fr
Author: kmorin Date: 2014-02-06 17:42:22 +0100 (Thu, 06 Feb 2014) New Revision: 7 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/7 Log: use jaxx application api Added: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationProvider.java trunk/faxtomail-persistence/src/main/resources/META-INF/ trunk/faxtomail-persistence/src/main/resources/META-INF/services/ trunk/faxtomail-persistence/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailActionFactory.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractMainUIFaxToMailAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/CloseApplicationAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GoToPreviousScreenAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReloadFaxToMailAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowConfigAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeListAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowRechercheAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/StartAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java Removed: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfig.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfigOption.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailBusinessException.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailIOUtil.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailTechnicalException.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/PropagatePropertyChangeListener.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DefaultFaxToMailServiceContext.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/config/ trunk/faxtomail-service/src/main/resources/META-INF/services/ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionException.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionHelper.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionSwingWorker.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUIModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailUIAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/config/ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractChangeScreenAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractMainUIFaxToMailAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/CloseApplicationAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/GoToPreviousScreenAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ReloadFaxToMailAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowConfigAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeListAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowRechercheAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/StartAction.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailErrorHelper.java trunk/faxtomail-ui-swing/src/main/resources/META-INF/services/ Modified: trunk/faxtomail-persistence/pom.xml trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/ProgressionModel.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/RessourceClassLoader.java trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties trunk/faxtomail-service/pom.xml trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java trunk/faxtomail-ui-swing/pom.xml trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/config/FaxToMailConfigUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/config/FaxToMailConfigUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUI.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/Label.java trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties trunk/faxtomail-ui-web/pom.xml trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/DefaultFaxToMailWebApplicationContext.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailActionSupport.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java Modified: trunk/faxtomail-persistence/pom.xml =================================================================== --- trunk/faxtomail-persistence/pom.xml 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/pom.xml 2014-02-06 16:42:22 UTC (rev 7) @@ -49,6 +49,11 @@ </dependency> <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-application-api</artifactId> + </dependency> + + <dependency> <groupId>org.nuiton.i18n</groupId> <artifactId>nuiton-i18n</artifactId> </dependency> Deleted: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfig.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfig.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfig.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,124 +0,0 @@ -package com.franciaflex.faxtomail; - -/* - * #%L - * Extranet ENC-AHI :: Persistence - * $Id: ExtranetEncAhiApplicationConfig.java 866 2013-12-13 10:34:05Z bleny $ - * $HeadURL: http://svn.forge.codelutin.com/svn/extranet-enc-ahi/trunk/extranet-persisten... $ - * %% - * Copyright (C) 2013 Ministère des Affaires sociales et de la Santé - * %% - * This program 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. - * - * This program 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.config.ApplicationConfig; -import org.nuiton.config.ArgumentsParserException; - -import java.io.File; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -public class FaxToMailApplicationConfig { - - private static final Log log = LogFactory.getLog(FaxToMailApplicationConfig.class); - - protected ApplicationConfig applicationConfig; - - public FaxToMailApplicationConfig() { - applicationConfig = new ApplicationConfig(); - applicationConfig.loadDefaultOptions(FaxToMailApplicationConfigOption.values()); - applicationConfig.setConfigFileName("faxtomail.properties"); - try { - applicationConfig.parse(); - } catch (ArgumentsParserException e) { - throw new FaxToMailTechnicalException(e); - } - if (log.isInfoEnabled()) { - StringBuilder builder = new StringBuilder(); - List<FaxToMailApplicationConfigOption> options = - Lists.newArrayList(FaxToMailApplicationConfigOption.values()); - for (FaxToMailApplicationConfigOption option : options) { - String key = option.getKey(); - Object value = applicationConfig.getOption(option); - builder.append(String.format("\n%1$-40s = %2$s", - key, - value)); - } - log.info("faxtomail: " + builder.toString()); - } - } - - public boolean isDevMode() { - boolean isDevMode = applicationConfig.getOptionAsBoolean(FaxToMailApplicationConfigOption.DEV_MODE.key); - return isDevMode; - } - - public Map<String, String> getTopiaProperties() { - Map<String, String> jpaParameters = Maps.newHashMap(); - Properties hibernateProperties = applicationConfig.getOptionStartsWith("hibernate"); - jpaParameters.putAll((Map) hibernateProperties); - return jpaParameters; - } - - /** - * @return Le nom d'hôte du serveur SMTP. - */ - public String getSmtpHost() { - return applicationConfig.getOption(FaxToMailApplicationConfigOption.SMTP_HOST.key); - } - - /** - * @return Le port du serveur SMTP. - */ - public int getSmtpPort() { - return applicationConfig.getOptionAsInt(FaxToMailApplicationConfigOption.SMTP_PORT.key); - } - - /** - * @return L'adresse d'expéditeur pour les mails de notifications - */ - public String getSmtpFrom() { - return applicationConfig.getOption(FaxToMailApplicationConfigOption.SMTP_FROM.key); - } - - public String getInstanceUrl() { - return applicationConfig.getOption(FaxToMailApplicationConfigOption.INSTANCE_URL.key); - } - - public String getInstanceDisclaimer() { - return applicationConfig.getOption(FaxToMailApplicationConfigOption.INSTANCE_DISCLAIMER.key); - } - - public File getStorageFile() { - return applicationConfig.getOptionAsFile(FaxToMailApplicationConfigOption.STORAGE_FILE.key); - } - - public boolean isLogConfigurationProvided() { - boolean logConfigurationProvided = - StringUtils.isNotBlank(applicationConfig.getOption(FaxToMailApplicationConfigOption.LOG_CONFIGURATION_FILE.key)); - return logConfigurationProvided; - } - - public File getLogConfigurationFile() { - return applicationConfig.getOptionAsFile(FaxToMailApplicationConfigOption.LOG_CONFIGURATION_FILE.key); - } -} Deleted: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfigOption.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfigOption.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfigOption.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,142 +0,0 @@ -package com.franciaflex.faxtomail; - -/* - * #%L - * Extranet ENC-AHI :: Persistence - * $Id: ExtranetEncAhiApplicationConfigOption.java 869 2013-12-13 13:09:12Z bleny $ - * $HeadURL: http://svn.forge.codelutin.com/svn/extranet-enc-ahi/trunk/extranet-persisten... $ - * %% - * Copyright (C) 2013 Ministère des Affaires sociales et de la Santé - * %% - * This program 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. - * - * This program 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import org.nuiton.config.ConfigOptionDef; - -import java.io.File; - -public enum FaxToMailApplicationConfigOption implements ConfigOptionDef { - - INSTANCE_URL( - "faxtomail.instanceUrl", - "URL à laquelle on peut accéder à l'instance de faxToMail", - "http://localhost:8080/faxtomail", String.class), - - INSTANCE_DISCLAIMER( - "faxtomail.instanceDisclaimer", - "Avertissement à afficher aux utilisateurs si l'instance est instable", - null, String.class), - - SMTP_HOST( - "smtp.host", - "Nom d'hôte du serveur SMTP", - "", String.class), - - SMTP_PORT( - "smtp.port", - "Le port du serveur SMTP", - "25", Integer.class), - - SMTP_FROM( - "smtp.from", - "L'adresse d'expéditeur pour les mails de notifications", - "", String.class), - - DEV_MODE( - "faxtomail.devMode", - "Mode développement, court-circuite l'envoi de mail", - "true", Boolean.class), - -// CREATE_TRAINING_USERS( -// "extranetEncAhi.createTrainingUsers", -// "Vrai s'il faut créer les comptes de formation au démarrage de l'application", -// "true", Boolean.class), - - STORAGE_FILE( - "faxtomail.storage", - "L'emplacement de stockage des fichiers, répertoire accessible en écriture sur le FS", - "/tmp/faxtomail/storage", File.class), - -// SUPPORT_EMAIL( -// "extranetEncAhi.supportEmail", -// "L'adresse mail à contacter par l'utilisateur pour demander de l'aide", -// "extranet-enc-ahi-users@list.forge.codelutin.com", String.class), - - LOG_CONFIGURATION_FILE( - "logConfigurationFile", - "Chemin vers le fichier de configuration des journaux", - null, - String.class); - - protected final String key; - protected final String description; - protected final Class<?> type; - protected String defaultValue; - - private FaxToMailApplicationConfigOption(String key, String description, - String defaultValue, Class<?> type) { - this.key = key; - this.description = description; - this.defaultValue = defaultValue; - this.type = type; - } - - @Override - public String getKey() { - return key; - } - - @Override - public Class<?> getType() { - return type; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public String getDefaultValue() { - return defaultValue; - } - - @Override - public boolean isTransient() { - return false; - } - - @Override - public boolean isFinal() { - return false; - } - - @Override - public void setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - } - - @Override - public void setTransient(boolean isTransient) { - // Nothing to do - } - - @Override - public void setFinal(boolean isFinal) { - // Nothing to do - } - -} \ No newline at end of file Deleted: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailBusinessException.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailBusinessException.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailBusinessException.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,24 +0,0 @@ -package com.franciaflex.faxtomail; - -/** - * To box any business exception. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class FaxToMailBusinessException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public FaxToMailBusinessException(String message) { - super(message); - } - - public FaxToMailBusinessException(String message, Throwable cause) { - super(message, cause); - } - - public FaxToMailBusinessException(Throwable cause) { - super(cause); - } -} Copied: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java (from rev 4, trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfig.java) =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java (rev 0) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,389 @@ +package com.franciaflex.faxtomail; + +/* + * #%L + * Extranet ENC-AHI :: Persistence + * $Id: ExtranetEncAhiApplicationConfig.java 866 2013-12-13 10:34:05Z bleny $ + * $HeadURL: http://svn.forge.codelutin.com/svn/extranet-enc-ahi/trunk/extranet-persisten... $ + * %% + * Copyright (C) 2013 Ministère des Affaires sociales et de la Santé + * %% + * This program 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. + * + * This program 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 General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +import com.google.common.base.Charsets; +import com.google.common.base.Predicate; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.config.ApplicationConfig; +import org.nuiton.config.ApplicationConfigHelper; +import org.nuiton.config.ApplicationConfigProvider; +import org.nuiton.config.ArgumentsParserException; +import org.nuiton.jaxx.application.ApplicationConfiguration; +import org.nuiton.jaxx.application.ApplicationIOUtil; +import org.nuiton.jaxx.application.ApplicationTechnicalException; +import org.nuiton.util.Version; + +import javax.swing.*; +import java.awt.*; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; + +public class FaxToMailConfiguration extends ApplicationConfiguration { + + private static final Log log = LogFactory.getLog(FaxToMailConfiguration.class); + + private static FaxToMailConfiguration instance; + + public static FaxToMailConfiguration getInstance() { + return instance; + } + + public static void setInstance(FaxToMailConfiguration instance) { + FaxToMailConfiguration.instance = instance; + } + + protected final String[] optionKeyToNotSave; + + protected File configFile; + + public FaxToMailConfiguration(ApplicationConfig applicationConfig) { + super(applicationConfig); + optionKeyToNotSave = null; + } + + public FaxToMailConfiguration(String file, String... args) { + super(new ApplicationConfig()); + applicationConfig.setEncoding(Charsets.UTF_8.name()); + + // get all config providers + Set<ApplicationConfigProvider> providers = + ApplicationConfigHelper.getProviders(null, + null, + null, + true); + + // load all default options + ApplicationConfigHelper.loadAllDefaultOption(applicationConfig, + providers); + + // get all transient and final option keys + Set<String> optionToSkip = + ApplicationConfigHelper.getTransientOptionKeys(providers); + + if (log.isDebugEnabled()) { + log.debug("Option that won't be saved: " + optionToSkip); + } + optionKeyToNotSave = optionToSkip.toArray(new String[optionToSkip.size()]); + + applicationConfig.setConfigFileName(file); + + try { + applicationConfig.parse(args); + + } catch (ArgumentsParserException e) { + throw new ApplicationTechnicalException(t("faxtomail.config.parse.error"), e); + } + + //TODO Review this, this is very dirty to do this... + File faxToMailBasedir = applicationConfig.getOptionAsFile( + FaxToMailConfigurationOption.BASEDIR.getKey()); + + if (faxToMailBasedir == null) { + faxToMailBasedir = new File(""); + } + if (!faxToMailBasedir.isAbsolute()) { + faxToMailBasedir = new File(faxToMailBasedir.getAbsolutePath()); + } + if (faxToMailBasedir.getName().equals("..")) { + faxToMailBasedir = faxToMailBasedir.getParentFile().getParentFile(); + } + if (faxToMailBasedir.getName().equals(".")) { + faxToMailBasedir = faxToMailBasedir.getParentFile(); + } + if (log.isInfoEnabled()) { + log.info("Application basedir: " + faxToMailBasedir); + } + applicationConfig.setOption( + FaxToMailConfigurationOption.BASEDIR.getKey(), + faxToMailBasedir.getAbsolutePath()); + + if (log.isInfoEnabled()) { + StringBuilder builder = new StringBuilder(); + List<FaxToMailConfigurationOption> options = + Lists.newArrayList(FaxToMailConfigurationOption.values()); + for (FaxToMailConfigurationOption option : options) { + String key = option.getKey(); + Object value = applicationConfig.getOption(option); + builder.append(String.format("\n%1$-40s = %2$s", + key, + value)); + } + log.info("faxtomail: " + builder.toString()); + } + } + + public void prepareDirectories() { + + File dataDirectory = getDataDirectory(); + ApplicationIOUtil.forceMkdir( + dataDirectory, + t("faxtomail.service.mkDir.error", dataDirectory)); + + File tmpDirectory = getTmpDirectory(); + if (tmpDirectory.exists()) { + + ApplicationIOUtil.deleteDirectory( + tmpDirectory, + t("faxtomail.service.config.deleteTempDirectory.error", tmpDirectory)); + } + ApplicationIOUtil.forceMkdir( + tmpDirectory, + t("faxtomail.service.mkDir.error", tmpDirectory)); + + } + + public File getConfigFile() { + if (configFile == null) { + File dir = getBasedir(); + if (dir == null || !dir.exists() || !isFullLaunchMode()) { + dir = new File(applicationConfig.getUserConfigDirectory()); + } + configFile = new File(dir, applicationConfig.getConfigFileName()); + } + return configFile; + } + + public void save() { + + File file = getConfigFile(); + if (log.isInfoEnabled()) { + log.info("Save configuration at: " + file); + } + try { + applicationConfig.save(file, false, optionKeyToNotSave); + } catch (IOException e) { + throw new ApplicationTechnicalException( + t("tutti.config.save.error", file), e); + } + } + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this); + } + + // OPTION SETTERS + + public void setCsvSeparator(char c) { + applicationConfig.setOption( + FaxToMailConfigurationOption.CSV_SEPARATOR.getKey(), c + ""); + } + + // OPTION GETTERS + + public boolean isDevMode() { + boolean isDevMode = applicationConfig.getOptionAsBoolean(FaxToMailConfigurationOption.DEV_MODE.getKey()); + return isDevMode; + } + + public Map<String, String> getTopiaProperties() { + Map<String, String> jpaParameters = Maps.newHashMap(); + Properties hibernateProperties = applicationConfig.getOptionStartsWith("hibernate"); + jpaParameters.putAll((Map) hibernateProperties); + return jpaParameters; + } + + /** + * @return Le nom d'hôte du serveur SMTP. + */ + public String getSmtpHost() { + return applicationConfig.getOption(FaxToMailConfigurationOption.SMTP_HOST.getKey()); + } + + /** + * @return Le port du serveur SMTP. + */ + public int getSmtpPort() { + return applicationConfig.getOptionAsInt(FaxToMailConfigurationOption.SMTP_PORT.getKey()); + } + + /** + * @return L'adresse d'expéditeur pour les mails de notifications + */ + public String getSmtpFrom() { + return applicationConfig.getOption(FaxToMailConfigurationOption.SMTP_FROM.getKey()); + } + + public String getInstanceUrl() { + return applicationConfig.getOption(FaxToMailConfigurationOption.INSTANCE_URL.getKey()); + } + + public String getInstanceDisclaimer() { + return applicationConfig.getOption(FaxToMailConfigurationOption.INSTANCE_DISCLAIMER.getKey()); + } + + public File getStorageFile() { + return applicationConfig.getOptionAsFile(FaxToMailConfigurationOption.STORAGE_FILE.getKey()); + } + + public boolean isLogConfigurationProvided() { + boolean logConfigurationProvided = + StringUtils.isNotBlank(applicationConfig.getOption(FaxToMailConfigurationOption.LOG_CONFIGURATION_FILE.getKey())); + return logConfigurationProvided; + } + + public File getLogConfigurationFile() { + return applicationConfig.getOptionAsFile(FaxToMailConfigurationOption.LOG_CONFIGURATION_FILE.getKey()); + } + + @Override + public String getApplicationName() { + return "FaxToMail"; + } + + /** @return {@link FaxToMailConfigurationOption#VERSION} value */ + @Override + public Version getVersion() { + return applicationConfig.getOptionAsVersion(FaxToMailConfigurationOption.VERSION.getKey()); + } + + /** @return {@link FaxToMailConfigurationOption#SITE_URL} value */ + public URL getSiteUrl() { + return applicationConfig.getOptionAsURL(FaxToMailConfigurationOption.SITE_URL.getKey()); + } + + /** @return {@link FaxToMailConfigurationOption#ORGANIZATION_NAME} value */ + public String getOrganizationName() { + return applicationConfig.getOption(FaxToMailConfigurationOption.ORGANIZATION_NAME.getKey()); + } + + /** @return {@link FaxToMailConfigurationOption#INCEPTION_YEAR} value */ + public int getInceptionYear() { + return applicationConfig.getOptionAsInt(FaxToMailConfigurationOption.INCEPTION_YEAR.getKey()); + } + + /** @return {@link FaxToMailConfigurationOption#BASEDIR} value */ + public File getBasedir() { + File result = applicationConfig.getOptionAsFile(FaxToMailConfigurationOption.BASEDIR.getKey()); + return result; + } + + /** @return {@link FaxToMailConfigurationOption#DATA_DIRECTORY} value */ + public File getDataDirectory() { + File result = applicationConfig.getOptionAsFile(FaxToMailConfigurationOption.DATA_DIRECTORY.getKey()); + return result; + } + + public File getTmpDirectory() { + File result = applicationConfig.getOptionAsFile(FaxToMailConfigurationOption.TMP_DIRECTORY.getKey()); + return result; + } + + public File newTempFile(String basename) { + return new File(getTmpDirectory(), basename + "_" + System.nanoTime()); + } + + public char getCsvSeparator() { + return applicationConfig.getOption( + FaxToMailConfigurationOption.CSV_SEPARATOR.getKey()).charAt(0); + } + + public boolean isFullLaunchMode() { + return "full".equals(getFaxToMailLaunchMode()); + } + + public String getFaxToMailLaunchMode() { + return applicationConfig.getOption(FaxToMailConfigurationOption.FAXTOMAIL_LAUNCH_MODE.getKey()); + } + + /** @return {@link FaxToMailConfigurationOption#UI_CONFIG_FILE} value */ + public File getUIConfigFile() { + return applicationConfig.getOptionAsFile(FaxToMailConfigurationOption.UI_CONFIG_FILE.getKey()); + } + + /** @return {@link FaxToMailConfigurationOption#START_ACTION_FILE} value */ + public File getStartActionFile() { + return applicationConfig.getOptionAsFile(FaxToMailConfigurationOption.START_ACTION_FILE.getKey()); + } + + public KeyStroke getShortCut(String actionName) { + KeyStroke result = applicationConfig.getOptionAsKeyStroke( + "faxtomail.ui." + actionName); + return result; + } + + public boolean isAutoPopupNumberEditor() { + return applicationConfig.getOptionAsBoolean(FaxToMailConfigurationOption.AUTO_POPUP_NUMBER_EDITOR.getKey()); + } + + public boolean isShowNumberEditorButton() { + return applicationConfig.getOptionAsBoolean(FaxToMailConfigurationOption.SHOW_NUMBER_EDITOR_BUTTON.getKey()); + } + + public Color getColorBlockingLayer() { + return applicationConfig.getOptionAsColor(FaxToMailConfigurationOption.COLOR_BLOCKING_LAYER.getKey()); + } + + public Color getColorAlternateRow() { + return applicationConfig.getOptionAsColor(FaxToMailConfigurationOption.COLOR_ALTERNATE_ROW.getKey()); + } + + public Color getColorSelectedRow() { + return applicationConfig.getOptionAsColor(FaxToMailConfigurationOption.COLOR_SELECTED_ROW.getKey()); + } + + @Override + public KeyStroke getShortcutClosePopup() { + return applicationConfig.getOptionAsKeyStroke(FaxToMailConfigurationOption.SHORTCUT_CLOSE_POPUP.getKey()); + } + + public String getDateFormat() { + return applicationConfig.getOption(FaxToMailConfigurationOption.DATE_FORMAT.getKey()); + } + + public File getNewTmpDirectory(String name) { + return new File(getTmpDirectory(), name + "_" + System.nanoTime()); + } + + public File getI18nDirectory() { + return applicationConfig.getOptionAsFile( + FaxToMailConfigurationOption.FAXTOMAIL_I18N_DIRECTORY.getKey()); + } + + public Locale getI18nLocale() { + return applicationConfig.getOptionAsLocale( + FaxToMailConfigurationOption.FAXTOMAIL_I18N_LOCALE.getKey()); + } + + public void setI18nLocale(Locale locale) { + applicationConfig.setOption(FaxToMailConfigurationOption.FAXTOMAIL_I18N_LOCALE.getKey(), locale.toString()); + } + +} Copied: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java (from rev 4, trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationConfigOption.java) =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java (rev 0) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,335 @@ +package com.franciaflex.faxtomail; + +/* + * #%L + * Extranet ENC-AHI :: Persistence + * $Id: ExtranetEncAhiApplicationConfigOption.java 869 2013-12-13 13:09:12Z bleny $ + * $HeadURL: http://svn.forge.codelutin.com/svn/extranet-enc-ahi/trunk/extranet-persisten... $ + * %% + * Copyright (C) 2013 Ministère des Affaires sociales et de la Santé + * %% + * This program 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. + * + * This program 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 General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +import org.nuiton.config.ConfigOptionDef; +import org.nuiton.util.Version; + +import javax.swing.*; +import java.awt.*; +import java.io.File; +import java.net.URL; +import java.util.Locale; + +import static org.nuiton.i18n.I18n.n; + +public enum FaxToMailConfigurationOption implements ConfigOptionDef { + + INSTANCE_URL( + "faxtomail.instanceUrl", + "URL à laquelle on peut accéder à l'instance de faxToMail", + "http://localhost:8080/faxtomail", String.class), + + INSTANCE_DISCLAIMER( + "faxtomail.instanceDisclaimer", + "Avertissement à afficher aux utilisateurs si l'instance est instable", + null, String.class), + + SMTP_HOST( + "smtp.host", + "Nom d'hôte du serveur SMTP", + "", String.class), + + SMTP_PORT( + "smtp.port", + "Le port du serveur SMTP", + "25", Integer.class), + + SMTP_FROM( + "smtp.from", + "L'adresse d'expéditeur pour les mails de notifications", + "", String.class), + + DEV_MODE( + "faxtomail.devMode", + "Mode développement, court-circuite l'envoi de mail", + "true", Boolean.class), + +// CREATE_TRAINING_USERS( +// "extranetEncAhi.createTrainingUsers", +// "Vrai s'il faut créer les comptes de formation au démarrage de l'application", +// "true", Boolean.class), + + STORAGE_FILE( + "faxtomail.storage", + "L'emplacement de stockage des fichiers, répertoire accessible en écriture sur le FS", + "/tmp/faxtomail/storage", File.class), + +// SUPPORT_EMAIL( +// "extranetEncAhi.supportEmail", +// "L'adresse mail à contacter par l'utilisateur pour demander de l'aide", +// "extranet-enc-ahi-users@list.forge.codelutin.com", String.class), + + LOG_CONFIGURATION_FILE( + "logConfigurationFile", + "Chemin vers le fichier de configuration des journaux", + null, + String.class), + + //SERVICE + + // TRANSIENT CONFIG + VERSION( + "faxtomail.version", + n("faxtomail.config.option.version.description"), + "", + Version.class, + true), + + SITE_URL( + "faxtomail.site.url", + n("faxtomail.config.option.site.url.description"), + "http://maven-site.forge.codelutin.com/faxtomail", + URL.class, + true), + + ORGANIZATION_NAME( + "faxtomail.organizationName", + n("faxtomail.config.option.organizationName.description"), + "", + String.class, + true), + + INCEPTION_YEAR( + "faxtomail.inceptionYear", + n("faxtomail.config.option.inceptionYear.description"), + "2012", + Integer.class, + true), + + BASEDIR( + "faxtomail.basedir", + n("faxtomail.config.option.basedir.description"), + "${user.home}/.faxtomail", + File.class, + true + ), + + DATA_DIRECTORY( + "faxtomail.data.directory", + n("faxtomail.config.option.data.directory.description"), + "${faxtomail.basedir}/data", + File.class, + true), + + TMP_DIRECTORY( + "faxtomail.tmp.directory", + n("faxtomail.config.option.tmp.directory.description"), + "${faxtomail.data.directory}/temp", + File.class, + true), + + // NOT TRANSIENT CONFIG + + CSV_SEPARATOR( + "faxtomail.csv.separator", + n("faxtomail.config.option.csv.separator.description"), + ";", + char.class), + + // UI + + FAXTOMAIL_LAUNCH_MODE( + "faxtomail.launch.mode", + n("faxtomail.config.option.launch.mode.description"), + null, + String.class, + true + ), + + FAXTOMAIL_I18N_DIRECTORY( + "faxtomail.i18n.directory", + n("faxtomail.config.option.i18n.directory.description"), + "${faxtomail.basedir}/i18n", + File.class, + true + ), + +// FAXTOMAIL_HELP_DIRECTORY( +// "faxtomail.help.directory", +// n("faxtomail.config.option.help.directory.description"), +// "${faxtomail.basedir}/help", +// File.class, +// false, +// true +// ), + + START_ACTION_FILE( + "faxtomail.startActionFile", + n("faxtomail.config.option.startActionFile.description"), + "${faxtomail.basedir}/faxtomail-start-action", + File.class, + true + ), + FAXTOMAIL_I18N_LOCALE( + "faxtomail.i18n.locale", + n("faxtomail.config.option.i18n.locale.description"), + Locale.FRANCE.getCountry(), + Locale.class + ), + + UI_CONFIG_FILE( + "faxtomail.ui.config.file", + n("faxtomail.config.option.ui.config.file.description"), + "${faxtomail.data.directory}/faxtomailUI.xml", + File.class + ), + + AUTO_POPUP_NUMBER_EDITOR( + "faxtomail.ui.autoPopupNumberEditor", + n("faxtomail.config.option.ui.autoPopupNumberEditor.description"), + String.valueOf(false), + Boolean.class + ), + + SHOW_NUMBER_EDITOR_BUTTON( + "faxtomail.ui.showNumberEditorButton", + n("faxtomail.config.option.ui.showNumberEditorButton.description"), + String.valueOf(true), + Boolean.class + ), + + COLOR_ALTERNATE_ROW( + "faxtomail.ui.color.alternateRow", + n("faxtomail.config.option.ui.color.alternateRow.description"), + new Color(217, 217, 217).toString(), + Color.class + ), + COLOR_SELECTED_ROW( + "faxtomail.ui.color.selectedRow", + n("faxtomail.config.option.ui.color.selectedRow.description"), + new Color(57,105,138).toString(), + Color.class + ), + + /* + UIDefaults defaults = UIManager.getLookAndFeelDefaults(); +defaults.put("Table.alternateRowColor", new Color(217, 217, 217)); + */ + COLOR_BLOCKING_LAYER( + "faxtomail.ui.color.blockingLayer", + n("faxtomail.config.option.ui.color.blockingLayer.description"), + new Color(200, 200, 200).toString(), + Color.class + ), + + SHORTCUT_CLOSE_POPUP( + "faxtomail.ui.shortcut.closePopup", + n("faxtomail.config.option.ui.shortcut.closePopup.description"), + "alt pressed F", + KeyStroke.class + ), + + DATE_FORMAT( + "faxtomail.ui.dateFormat", + n("faxtomail.config.option.ui.dateFormat.description"), + "dd/MM/yyyy", + String.class + ); + + /** Configuration key. */ + private final String key; + + /** I18n key of option description */ + private final String description; + + /** Type of option */ + private final Class<?> type; + + /** Default value of option. */ + private String defaultValue; + + /** Flag to not keep option value on disk */ + private boolean isTransient; + + /** Flag to not allow option value modification */ + private boolean isFinal; + + FaxToMailConfigurationOption(String key, + String description, + String defaultValue, + Class<?> type, + boolean isTransient) { + this.key = key; + this.description = description; + this.defaultValue = defaultValue; + this.type = type; + this.isTransient = isTransient; + this.isFinal = isTransient; + } + + FaxToMailConfigurationOption(String key, + String description, + String defaultValue, + Class<?> type) { + this(key, description, defaultValue, type, true); + } + + @Override + public String getKey() { + return key; + } + + @Override + public Class<?> getType() { + return type; + } + + @Override + public String getDescription() { + return description; + } + + @Override + public String getDefaultValue() { + return defaultValue; + } + + @Override + public boolean isTransient() { + return isTransient; + } + + @Override + public boolean isFinal() { + return isFinal; + } + + @Override + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + @Override + public void setTransient(boolean newValue) { + // not used + } + + @Override + public void setFinal(boolean newValue) { + // not used + } + +} \ No newline at end of file Added: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationProvider.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationProvider.java (rev 0) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationProvider.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,63 @@ +package com.franciaflex.faxtomail; + +/* + * #%L + * Tutti :: Persistence + * $Id: TuttiConfigurationProvider.java 1566 2014-02-04 08:31:02Z tchemit $ + * $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/tutti-persistence/src/main/ja... $ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import org.nuiton.config.ApplicationConfigProvider; +import org.nuiton.config.ConfigActionDef; +import org.nuiton.config.ConfigOptionDef; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * Tutti config provider (for site generation). + * Created on 11/24/13. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 3.0 + */ +public class FaxToMailConfigurationProvider implements ApplicationConfigProvider { + + @Override + public String getName() { + return "faxToMail"; + } + + @Override + public String getDescription(Locale locale) { + return l(locale, "faxToMail.config"); + } + + @Override + public ConfigOptionDef[] getOptions() { + return FaxToMailConfigurationOption.values(); + } + + @Override + public ConfigActionDef[] getActions() { + return new ConfigActionDef[0]; + } +} \ No newline at end of file Deleted: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailIOUtil.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailIOUtil.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailIOUtil.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,231 +0,0 @@ -package com.franciaflex.faxtomail; - -import com.google.common.base.Charsets; -import com.google.common.io.Files; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.vfs2.FileObject; -import org.apache.commons.vfs2.FileSelector; -import org.apache.commons.vfs2.FileSystemManager; -import org.apache.commons.vfs2.FileType; -import org.apache.commons.vfs2.VFS; -import org.nuiton.util.ZipUtil; - -import java.io.Closeable; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.Reader; -import java.io.Writer; -import java.util.List; -import java.util.UUID; - -import static org.nuiton.i18n.I18n.t; - -/** - * Useful methods around IO, all method errors are boxes a - * {@link FaxToMailTechnicalException}. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0.2 - */ -public class FaxToMailIOUtil { - - protected FaxToMailIOUtil() { - // no instance - } - - public static void close(Closeable toClose, String errorMessage) { - - try { - toClose.close(); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void zip(File source, File archiveFile, String errorMessage) { - try { - ZipUtil.compress(archiveFile, source); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void zip(File source, File archiveFile, List<File> files, String errorMessage) { - try { - ZipUtil.compressFiles(archiveFile, source, files); - } catch (IOException e) { - throw new FaxToMailTechnicalException(t(errorMessage, archiveFile), e); - } - } - - public static FileObject resolveFile(String file, String errorMessage) { - try { - FileSystemManager manager = VFS.getManager(); - FileObject targetObject = manager.resolveFile(file); - return targetObject; - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static FileObject[] getChildren(FileObject objectFile, String errorMessage) { - try { - return objectFile.getChildren(); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static FileObject getChild(FileObject objectFile, String name, String errorMessage) { - try { - return objectFile.getChild(name); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - - public static FileType getType(FileObject objectFile, String errorMessage) { - try { - return objectFile.getType(); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void explode(FileObject archiveFile, - File target, - FileSelector fileSelector, String errorMessage) { - try { - FileSystemManager manager = VFS.getManager(); - FileObject targetObject = manager.toFileObject(target); - targetObject.copyFrom(archiveFile, fileSelector); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void forceMkdir(File dir, String errorMessage) { - try { - FileUtils.forceMkdir(dir); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void cleanDirectory(File dir, String errorMessage) { - try { - FileUtils.cleanDirectory(dir); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void deleteDirectory(File dir, String errorMessage) { - try { - FileUtils.deleteDirectory(dir); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void forceDeleteOnExit(File dir, String errorMessage) { - try { - FileUtils.forceDeleteOnExit(dir); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void copyDirectory(File source, File target, String errorMessage) { - try { - FileUtils.copyDirectory(source, target); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void copyFileToDirectory(File source, File target, String errorMessage) { - try { - FileUtils.copyFileToDirectory(source, target); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void copyFile(File source, File target, String errorMessage) { - try { - FileUtils.copyFile(source, target); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void deleteFile(File file, String errorMessage) { - try { - FileUtils.forceDelete(file); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static String getBaseName(String file) { - return FilenameUtils.getBaseName(file); - } - - public static String getExtension(String file) { - return FilenameUtils.getExtension(file); - } - - public static Reader newReader(File file, String errorMessage) { - try { - return Files.newReader(file, Charsets.UTF_8); - - } catch (FileNotFoundException e) { - throw new FaxToMailTechnicalException(t(errorMessage, file), e); - } - } - - public static Writer newWriter(File file, String errorMessage - ) { - try { - return Files.newWriter(file, Charsets.UTF_8); - - } catch (FileNotFoundException e) { - throw new FaxToMailTechnicalException(t(errorMessage, file), e); - } - } - - public static File explodeZip(File rootDirectory, - File file, - String errorMessage) { - File tempDir = new File(rootDirectory, UUID.randomUUID().toString()); - try { - ZipUtil.uncompress(file, tempDir); - } catch (IOException e) { - throw new FaxToMailTechnicalException(t(errorMessage, file), e); - } - return tempDir; - } - - public static String readContent(File file, String errorMessage) { - - try { - return Files.readFirstLine(file, Charsets.UTF_8); - - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - } - - public static void writeContent(File file, String content, String errorMessage) { - try { - FileUtils.write(file, content, Charsets.UTF_8); - } catch (IOException e) { - throw new FaxToMailTechnicalException(errorMessage, e); - } - - } -} Deleted: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailTechnicalException.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailTechnicalException.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailTechnicalException.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,27 +0,0 @@ -package com.franciaflex.faxtomail; - -/** - * Any techincal exception should be boxed in a such exception. - * - * @author tchemit <chemit@codelutin.com/> - * @since 0.1 - */ -public class FaxToMailTechnicalException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public FaxToMailTechnicalException() { - } - - public FaxToMailTechnicalException(String message) { - super(message); - } - - public FaxToMailTechnicalException(String message, Throwable cause) { - super(message, cause); - } - - public FaxToMailTechnicalException(Throwable cause) { - super(cause); - } -} Deleted: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/PropagatePropertyChangeListener.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/PropagatePropertyChangeListener.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/PropagatePropertyChangeListener.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,56 +0,0 @@ -package com.franciaflex.faxtomail; - -import org.jdesktop.beans.AbstractBean; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -/** - * To listen a bean and propagate some of properties. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.3 - */ -public class PropagatePropertyChangeListener implements PropertyChangeListener { - - public static interface PropagatePropertyChange { - void firePropertyChanged(String propertyName, - Object oldValue, - Object newValue); - } - - public static void listenAndPropagate(AbstractBean producer, - PropagatePropertyChange consumer, - String propertyNameToListen, - String propertyNameToForward) { - PropagatePropertyChangeListener listener = - new PropagatePropertyChangeListener(propertyNameToForward, - consumer); - producer.addPropertyChangeListener(propertyNameToListen, listener); - } - - public static void listenAndPropagateAll(AbstractBean producer, - PropagatePropertyChange consumer) { - PropagatePropertyChangeListener listener = - new PropagatePropertyChangeListener(null, consumer); - producer.addPropertyChangeListener(listener); - } - - private String propertyName; - - private PropagatePropertyChange editor; - - public PropagatePropertyChangeListener(String propertyName, - PropagatePropertyChange editor) { - this.propertyName = propertyName; - this.editor = editor; - } - - @Override - public void propertyChange(PropertyChangeEvent evt) { - String name = propertyName == null ? evt.getPropertyName() : propertyName; - editor.firePropertyChanged(name, - evt.getOldValue(), - evt.getNewValue()); - } -} \ No newline at end of file Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/ProgressionModel.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/ProgressionModel.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/ProgressionModel.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,6 +1,7 @@ package com.franciaflex.faxtomail.persistence; import org.jdesktop.beans.AbstractSerializableBean; +import org.nuiton.jaxx.application.type.ApplicationProgressionModel; import org.nuiton.updater.DownloadMonitor; /** @@ -9,87 +10,10 @@ * @author tchemit <chemit@codelutin.com> * @since 1.0 */ -public class ProgressionModel extends AbstractSerializableBean implements DownloadMonitor { +public class ProgressionModel extends ApplicationProgressionModel implements DownloadMonitor { private static final long serialVersionUID = 1L; - public static final String PROPERTY_TOTAL = "total"; - - public static final String PROPERTY_CURRENT = "current"; - - public static final String PROPERTY_RATE = "rate"; - - public static final String PROPERTY_MESSAGE = "message"; - - protected int total; - - protected int current; - - protected float rate; - - protected String message; - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - Object oldValue = getTotal(); - this.total = total; - firePropertyChange(PROPERTY_TOTAL, oldValue, total); - setCurrent(0); - } - - public void adaptTotal(int total) { - long current = getCurrent(); - setTotal(total); - increments((int) current); - Object oldValue = getTotal(); - this.total = total; - firePropertyChange(PROPERTY_TOTAL, oldValue, total); - setCurrent(current); - } - - public long getCurrent() { - return current; - } - - public void setCurrent(int current) { - Object oldValue = getCurrent(); - this.current = current; - firePropertyChange(PROPERTY_CURRENT, oldValue, current); - } - - public void increments(int nb) { - setCurrent(current + nb); - setRate(getCurrent() / getTotal()); - } - - public float getRate() { - return rate; - } - - public void setRate(float rate) { - Object oldValue = getRate(); - this.rate = rate; - firePropertyChange(PROPERTY_RATE, oldValue, rate); - } - - public String getMessage() { - return message; - } - - public void increments(String message) { - increments(1); - setMessage(message); - } - - public void setMessage(String message) { - Object oldValue = getMessage(); - this.message = message; - firePropertyChange(PROPERTY_MESSAGE, oldValue, message); - } - @Override public void setSize(long size) { setTotal((int) size); Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/RessourceClassLoader.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/RessourceClassLoader.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/RessourceClassLoader.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,7 +1,5 @@ package com.franciaflex.faxtomail.persistence; -import com.franciaflex.faxtomail.FaxToMailIOUtil; -import com.franciaflex.faxtomail.FaxToMailTechnicalException; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Predicates; @@ -9,6 +7,8 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationIOUtil; +import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; @@ -60,7 +60,7 @@ this.directories.add(directory); // force to create directory - FaxToMailIOUtil.forceMkdir(directory, t("faxtomail.persistence.mkDir.error", directory)); + ApplicationIOUtil.forceMkdir(directory, t("faxtomail.persistence.mkDir.error", directory)); } } loader = null; @@ -158,7 +158,7 @@ directories.toArray(new File[directories.size()])); loader = URLClassLoader.newInstance(urls, null); } catch (IOException e) { - throw new FaxToMailTechnicalException(t("faxtomail.persistence.loader.error", directories), e); + throw new ApplicationTechnicalException(t("faxtomail.persistence.loader.error", directories), e); } } return loader; Added: trunk/faxtomail-persistence/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider =================================================================== --- trunk/faxtomail-persistence/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider (rev 0) +++ trunk/faxtomail-persistence/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1 @@ +com.franciaflex.faxtomail.FaxToMailConfigurationProvider \ No newline at end of file Modified: trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties =================================================================== --- trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties 2014-02-06 16:42:22 UTC (rev 7) @@ -1,2 +1,27 @@ +faxToMail.config= +faxtomail.config.option.basedir.description= +faxtomail.config.option.csv.separator.description= +faxtomail.config.option.data.directory.description= +faxtomail.config.option.i18n.directory.description= +faxtomail.config.option.i18n.locale.description= +faxtomail.config.option.inceptionYear.description= +faxtomail.config.option.launch.mode.description= +faxtomail.config.option.organizationName.description= +faxtomail.config.option.site.url.description= +faxtomail.config.option.startActionFile.description= +faxtomail.config.option.tmp.directory.description= +faxtomail.config.option.ui.autoPopupNumberEditor.description= +faxtomail.config.option.ui.color.alternateRow.description= +faxtomail.config.option.ui.color.blockingLayer.description= +faxtomail.config.option.ui.color.selectedRow.description= +faxtomail.config.option.ui.config.file.description= +faxtomail.config.option.ui.dateFormat.description= +faxtomail.config.option.ui.shortcut.closePopup.description= +faxtomail.config.option.ui.showNumberEditorButton.description= +faxtomail.config.option.version.description= +faxtomail.config.parse.error= faxtomail.persistence.loader.error= faxtomail.persistence.mkDir.error= +faxtomail.service.config.deleteTempDirectory.error= +faxtomail.service.mkDir.error= +tutti.config.save.error= Modified: trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties =================================================================== --- trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-02-06 16:42:22 UTC (rev 7) @@ -1,2 +1,27 @@ +faxToMail.config= +faxtomail.config.option.basedir.description= +faxtomail.config.option.csv.separator.description= +faxtomail.config.option.data.directory.description= +faxtomail.config.option.i18n.directory.description= +faxtomail.config.option.i18n.locale.description= +faxtomail.config.option.inceptionYear.description= +faxtomail.config.option.launch.mode.description= +faxtomail.config.option.organizationName.description= +faxtomail.config.option.site.url.description= +faxtomail.config.option.startActionFile.description= +faxtomail.config.option.tmp.directory.description= +faxtomail.config.option.ui.autoPopupNumberEditor.description= +faxtomail.config.option.ui.color.alternateRow.description= +faxtomail.config.option.ui.color.blockingLayer.description= +faxtomail.config.option.ui.color.selectedRow.description= +faxtomail.config.option.ui.config.file.description= +faxtomail.config.option.ui.dateFormat.description= +faxtomail.config.option.ui.shortcut.closePopup.description= +faxtomail.config.option.ui.showNumberEditorButton.description= +faxtomail.config.option.version.description= +faxtomail.config.parse.error= faxtomail.persistence.loader.error= faxtomail.persistence.mkDir.error= +faxtomail.service.config.deleteTempDirectory.error= +faxtomail.service.mkDir.error= +tutti.config.save.error= Modified: trunk/faxtomail-service/pom.xml =================================================================== --- trunk/faxtomail-service/pom.xml 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-service/pom.xml 2014-02-06 16:42:22 UTC (rev 7) @@ -69,6 +69,11 @@ </dependency> <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-application-api</artifactId> + </dependency> + + <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> Added: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java (rev 0) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,110 @@ +package com.franciaflex.faxtomail.services; + +/* + * #%L + * Tutti :: Application + * $Id: DecoratorService.java 1566 2014-02-04 08:31:02Z tchemit $ + * $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/tutti-service/src/main/java/f... $ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.franciaflex.faxtomail.LabelAware; +import org.nuiton.decorator.Decorator; +import org.nuiton.decorator.DecoratorProvider; + +import java.io.File; + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + +/** + * Tutti decorator service. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class DecoratorService extends FaxToMailServiceSupport { + + public static final String CARACTERISTIC_WITH_UNIT = "withUnit"; + + public static final String CARACTERISTIC_PARAMETER_ONLY_WITH_UNIT = "parameterOnlyWithUnit"; + + public static final String CARACTERISTIC_PARAMETER_ONLY = "parameterOnly"; + + public static final String FROM_PROTOCOL = "fromProtocol"; + + public static final String GEAR_WITH_RANK_ORDER = "gearWithrankOrder"; + + public static final String BY_NAME = "byName"; + + public static final String ONLY_NAME = "onlyName"; + + public static final String FILE_NAME_COMPATIBLE = "fileNameCompatible"; + + public static final String SEPARATOR = "#"; + + /** Delegate decorator provider. */ + protected DecoratorProvider decoratorProvider; + + public <O> Decorator<O> getDecorator(O object) { + return decoratorProvider.getDecorator(object); + } + + public <O> Decorator<O> getDecorator(O object, String name) { + return decoratorProvider.getDecorator(object, name); + } + + public <O> Decorator<O> getDecoratorByType(Class<O> type) { + return decoratorProvider.getDecoratorByType(type); + } + + public <O> Decorator<O> getDecoratorByType(Class<O> type, String name) { + return decoratorProvider.getDecoratorByType(type, name); + } + + @Override + public void setServiceContext(FaxToMailServiceContext context) { + super.setServiceContext(context); + + decoratorProvider = new DecoratorProvider() { + @Override + protected void loadDecorators() { + + registerDecorator(new Decorator<Float>(Float.class) { + private static final long serialVersionUID = 1L; + + @Override + public String toString(Object bean) { + return bean == null ? "" : String.valueOf(bean); + } + }); + registerDecorator(new Decorator<Number>(Number.class) { + private static final long serialVersionUID = 1L; + + @Override + public String toString(Object bean) { + return bean == null ? "" : String.valueOf(bean); + } + }); + registerMultiJXPathDecorator(LabelAware.class, "${label}$s", SEPARATOR, " - "); + } + }; + } + +} Deleted: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DefaultFaxToMailServiceContext.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DefaultFaxToMailServiceContext.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DefaultFaxToMailServiceContext.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,113 +0,0 @@ -package com.franciaflex.faxtomail.services; - -/* - * #%L - * Extranet ENC-AHI :: Services - * $Id: DefaultExtranetEncAhiServiceContext.java 827 2013-12-04 15:30:35Z bleny $ - * $HeadURL: http://svn.forge.codelutin.com/svn/extranet-enc-ahi/trunk/extranet-services/... $ - * %% - * Copyright (C) 2013 Ministère des Affaires sociales et de la Santé - * %% - * This program 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. - * - * This program 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import com.franciaflex.faxtomail.FaxToMailApplicationConfig; -import com.franciaflex.faxtomail.FaxToMailTechnicalException; -import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; -import com.franciaflex.faxtomail.services.service.FaxToMailWebApplicationContext; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.Date; -import java.util.Random; - -public class DefaultFaxToMailServiceContext implements FaxToMailServiceContext { - - protected FaxToMailApplicationConfig applicationConfig; - - protected FaxToMailTopiaPersistenceContext persistenceContext; - - protected FaxToMailWebApplicationContext webApplicationContext; - - @Override - public FaxToMailApplicationConfig getApplicationConfig() { - return applicationConfig; - } - - public void setPersistenceContext(FaxToMailTopiaPersistenceContext persistenceContext) { - this.persistenceContext = persistenceContext; - } - - @Override - public FaxToMailTopiaPersistenceContext getPersistenceContext() { - return persistenceContext; - } - - public void setApplicationConfig(FaxToMailApplicationConfig applicationConfig) { - this.applicationConfig = applicationConfig; - } - - @Override - public <E extends FaxToMailService> E newService(Class<E> serviceClass) { - - E service; - - try { - - Constructor<E> constructor = serviceClass.getConstructor(); - - service = constructor.newInstance(); - - } catch (NoSuchMethodException e) { - - throw new FaxToMailTechnicalException("all services must provide a non-argument constructor", e); - - } catch (InvocationTargetException e) { - - throw new FaxToMailTechnicalException("unable to instantiate service", e); - - } catch (InstantiationException e) { - - throw new FaxToMailTechnicalException("unable to instantiate service", e); - - } catch (IllegalAccessException e) { - - throw new FaxToMailTechnicalException("unable to instantiate service", e); - - } - - service.setServiceContext(this); - - return service; - - } - - @Override - public Date getNow() { - Date now = new Date(); - return now; - } - - @Override - public FaxToMailWebApplicationContext getWebApplicationContext() { - return webApplicationContext; - } - - public void setWebApplicationContext(FaxToMailWebApplicationContext webApplicationContext) { - this.webApplicationContext = webApplicationContext; - } - -} Deleted: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,21 +0,0 @@ -package com.franciaflex.faxtomail.services; - -import com.franciaflex.faxtomail.FaxToMailApplicationConfig; -import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; -import com.franciaflex.faxtomail.services.service.FaxToMailWebApplicationContext; - -import java.util.Date; - -public interface FaxToMailServiceContext { - - FaxToMailApplicationConfig getApplicationConfig(); - - FaxToMailTopiaPersistenceContext getPersistenceContext(); - - Date getNow(); - - <E extends FaxToMailService> E newService(Class<E> serviceClass); - - FaxToMailWebApplicationContext getWebApplicationContext(); - -} Copied: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java (from rev 4, trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DefaultFaxToMailServiceContext.java) =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java (rev 0) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceContext.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,112 @@ +package com.franciaflex.faxtomail.services; + +/* + * #%L + * Extranet ENC-AHI :: Services + * $Id: DefaultExtranetEncAhiServiceContext.java 827 2013-12-04 15:30:35Z bleny $ + * $HeadURL: http://svn.forge.codelutin.com/svn/extranet-enc-ahi/trunk/extranet-services/... $ + * %% + * Copyright (C) 2013 Ministère des Affaires sociales et de la Santé + * %% + * This program 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. + * + * This program 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 General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +import com.franciaflex.faxtomail.FaxToMailConfiguration; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; +import com.franciaflex.faxtomail.services.service.FaxToMailWebApplicationContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.Date; + +public class FaxToMailServiceContext { + + private static final Log log = + LogFactory.getLog(FaxToMailServiceContext.class); + + protected FaxToMailConfiguration applicationConfig; + + protected FaxToMailTopiaPersistenceContext persistenceContext; + + protected FaxToMailWebApplicationContext webApplicationContext; + + public FaxToMailConfiguration getApplicationConfig() { + return applicationConfig; + } + + public void setPersistenceContext(FaxToMailTopiaPersistenceContext persistenceContext) { + this.persistenceContext = persistenceContext; + } + + public FaxToMailTopiaPersistenceContext getPersistenceContext() { + return persistenceContext; + } + + public void setApplicationConfig(FaxToMailConfiguration applicationConfig) { + this.applicationConfig = applicationConfig; + } + + public <E extends FaxToMailService> E newService(Class<E> serviceClass) { + + E service; + + try { + + Constructor<E> constructor = serviceClass.getConstructor(); + + service = constructor.newInstance(); + + } catch (NoSuchMethodException e) { + + throw new ApplicationTechnicalException("all services must provide a non-argument constructor", e); + + } catch (InvocationTargetException e) { + + throw new ApplicationTechnicalException("unable to instantiate service", e); + + } catch (InstantiationException e) { + + throw new ApplicationTechnicalException("unable to instantiate service", e); + + } catch (IllegalAccessException e) { + + throw new ApplicationTechnicalException("unable to instantiate service", e); + + } + + service.setServiceContext(this); + + return service; + + } + + public Date getNow() { + Date now = new Date(); + return now; + } + + public FaxToMailWebApplicationContext getWebApplicationContext() { + return webApplicationContext; + } + + public void setWebApplicationContext(FaxToMailWebApplicationContext webApplicationContext) { + this.webApplicationContext = webApplicationContext; + } + +} Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java 2014-02-06 16:42:22 UTC (rev 7) @@ -24,7 +24,7 @@ * #L% */ -import com.franciaflex.faxtomail.FaxToMailApplicationConfig; +import com.franciaflex.faxtomail.FaxToMailConfiguration; import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; import com.franciaflex.faxtomail.services.service.CompanyService; import com.franciaflex.faxtomail.services.service.ConfigurationService; @@ -42,7 +42,7 @@ this.serviceContext = serviceContext; } - protected FaxToMailApplicationConfig getApplicationConfig() { + protected FaxToMailConfiguration getApplicationConfig() { return serviceContext.getApplicationConfig(); } Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-02-06 16:42:22 UTC (rev 7) @@ -24,19 +24,16 @@ * #L% */ -import com.franciaflex.faxtomail.FaxToMailApplicationConfig; -import com.franciaflex.faxtomail.FaxToMailTechnicalException; +import com.franciaflex.faxtomail.FaxToMailConfiguration; import com.franciaflex.faxtomail.persistence.entities.Company; import com.franciaflex.faxtomail.persistence.entities.CompanyTopiaDao; import com.franciaflex.faxtomail.persistence.entities.ConfigurationTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.validator.xwork2.XWork2ValidatorUtil; +import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; -import java.io.InputStream; -import java.util.List; public class InitFaxToMailService extends FaxToMailServiceSupport { @@ -68,7 +65,7 @@ protected void checkStorage() { - FaxToMailApplicationConfig applicationConfig = getApplicationConfig(); + FaxToMailConfiguration applicationConfig = getApplicationConfig(); File storageFile = applicationConfig.getStorageFile(); @@ -84,16 +81,16 @@ boolean created = storageFile.mkdirs(); if ( ! created) { - throw new FaxToMailTechnicalException("unable to create directory " + storageFile.getAbsolutePath()); + throw new ApplicationTechnicalException("unable to create directory " + storageFile.getAbsolutePath()); } } if ( ! storageFile.isDirectory()) { - throw new FaxToMailTechnicalException("file exists but is not a directory " + storageFile.getAbsolutePath()); + throw new ApplicationTechnicalException("file exists but is not a directory " + storageFile.getAbsolutePath()); } if ( ! storageFile.canWrite()) { - throw new FaxToMailTechnicalException("directory exists but is not writable " + storageFile.getAbsolutePath()); + throw new ApplicationTechnicalException("directory exists but is not writable " + storageFile.getAbsolutePath()); } } Modified: trunk/faxtomail-ui-swing/pom.xml =================================================================== --- trunk/faxtomail-ui-swing/pom.xml 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/pom.xml 2014-02-06 16:42:22 UTC (rev 7) @@ -29,6 +29,7 @@ <jaxx.generateSearch>false</jaxx.generateSearch> <jaxx.autoImportCss>true</jaxx.autoImportCss> <jaxx.autoRecurseInCss>false</jaxx.autoRecurseInCss> + <jaxx.addAutoHandlerUI>true</jaxx.addAutoHandlerUI> <i18n.bundleOutputName>faxtomail-i18n</i18n.bundleOutputName> <i18n.generateCsvFile>true</i18n.generateCsvFile> Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailActionFactory.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailActionFactory.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailActionFactory.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,61 @@ +package com.franciaflex.faxtomail.ui.swing; + +/* + * #%L + * Tutti :: UI + * $Id: TuttiActionFactory.java 1566 2014-02-04 08:31:02Z tchemit $ + * $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/tutti-ui-swing/src/main/java/... $ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.franciaflex.faxtomail.ui.swing.actions.AbstractMainUIFaxToMailAction; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import org.apache.commons.lang3.reflect.ConstructorUtils; +import org.nuiton.jaxx.application.ApplicationTechnicalException; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; +import org.nuiton.jaxx.application.swing.action.AbstractApplicationAction; +import org.nuiton.jaxx.application.swing.action.ApplicationActionFactory; + +import static org.nuiton.i18n.I18n.t; + +/** + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 3.0 + */ +public class FaxToMailActionFactory extends ApplicationActionFactory { + + @Override + public <A extends AbstractApplicationAction> A createLogicAction(AbstractApplicationUIHandler handler, + Class<A> actionName) { + FaxToMailUIContext context = (FaxToMailUIContext) handler.getContext(); + if (AbstractMainUIFaxToMailAction.class.isAssignableFrom(actionName) && + context.getMainUI() != null) { + handler = context.getMainUI().getHandler(); + } + + try { + // create action + A result = ConstructorUtils.invokeConstructor(actionName, (AbstractFaxToMailUIHandler) handler); + return result; + } catch (Exception e) { + throw new ApplicationTechnicalException(t("application.action.create.error", actionName), e); + } + } +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,14 +1,11 @@ package com.franciaflex.faxtomail.ui.swing; -import com.franciaflex.faxtomail.FaxToMailIOUtil; -import com.franciaflex.faxtomail.services.DefaultFaxToMailServiceContext; +import com.franciaflex.faxtomail.FaxToMailConfiguration; +import com.franciaflex.faxtomail.services.DecoratorService; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.persistence.RessourceClassLoader; -import com.franciaflex.faxtomail.ui.swing.config.FaxToMailApplicationConfig; import com.franciaflex.faxtomail.ui.swing.content.MainUI; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailErrorHelper; import com.franciaflex.faxtomail.ui.swing.util.UIMessageNotifier; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionUI; import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -17,7 +14,7 @@ import jaxx.runtime.swing.session.BeanDoubleListState; import jaxx.runtime.swing.session.BeanFilterableComboBoxState; import jaxx.runtime.swing.session.State; -import org.apache.commons.io.IOUtils; +import jaxx.runtime.swing.session.SwingSession; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -25,8 +22,19 @@ import org.nuiton.i18n.I18n; import org.nuiton.i18n.init.DefaultI18nInitializer; import org.nuiton.i18n.init.UserI18nInitializer; +import org.nuiton.jaxx.application.ApplicationConfiguration; +import org.nuiton.jaxx.application.ApplicationIOUtil; +import org.nuiton.jaxx.application.swing.ApplicationUIContext; +import org.nuiton.jaxx.application.swing.action.ApplicationActionEngine; +import org.nuiton.jaxx.application.swing.action.ApplicationActionFactory; +import org.nuiton.jaxx.application.swing.action.ApplicationActionUI; +import org.nuiton.jaxx.application.swing.util.ApplicationErrorHelper; import org.nuiton.util.converter.ConverterUtil; +import javax.swing.*; +import java.awt.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.Closeable; import java.io.File; import java.util.Locale; @@ -41,7 +49,7 @@ * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMessageNotifier { +public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMessageNotifier, ApplicationUIContext { /** Logger. */ private static final Log log = LogFactory.getLog(FaxToMailUIContext.class); @@ -50,6 +58,8 @@ public static final String PROPERTY_LOCALE = "locale"; + public static final Set<String> PROPERTIES_TO_SAVE = Sets.newHashSet(PROPERTY_LOCALE); + public static final String PROPERTY_BUSY = "busy"; public static final String PROPERTY_HIDE_BODY = "hideBody"; @@ -66,7 +76,7 @@ * * @since 0.1 */ - protected final FaxToMailApplicationConfig config; + protected final FaxToMailConfiguration config; /** * ClassLoader ressource. @@ -80,23 +90,30 @@ * * @since 0.1 */ -// protected final FaxToMailServiceContext serviceContext; + protected final FaxToMailServiceContext serviceContext; /** * Swing session used to save ui states. * * @since 0.1 */ -// protected final SwingSession swingSession; + protected final SwingSession swingSession; /** * Erro helper. * * @since 1.0 */ - protected final FaxToMailErrorHelper errorHelper; + protected final ApplicationErrorHelper errorHelper; /** + * Shared data context. + * + * @since 1.0.2 + */ +// protected TuttiDataContext dataContext; + + /** * Current screen displayed in ui. * * @since 0.1 @@ -133,10 +150,27 @@ private MainUI mainUI; - private FaxToMailActionUI actionUI; + private ApplicationActionUI actionUI; + /** + * Flag to know if there is an exsiting db. + * + * @since 1.0 + */ + private boolean dbExist; - public static FaxToMailUIContext newContext(FaxToMailApplicationConfig config) { + /** + * Flag to know if there is a loaded db. + * + * @since 1.0 + */ + private boolean dbLoaded; + + private final ApplicationActionFactory faxToMailActionFactory; + + private final ApplicationActionEngine faxToMailActionEngine; + + public static FaxToMailUIContext newContext(FaxToMailConfiguration config) { Preconditions.checkNotNull(config); Preconditions.checkState(applicationContext == null, "Application context was already opened!"); @@ -148,20 +182,47 @@ return applicationContext; } - public static FaxToMailErrorHelper getErrorHelper() { + public ApplicationErrorHelper getErrorHelper() { return applicationContext.errorHelper; } - protected FaxToMailUIContext(FaxToMailApplicationConfig config) { + @Override + public String getI18nPrefix() { + return "faxtomail.property."; + } + + @Override + public String getDateFormat() { + return getConfig().getDateFormat(); + } + + protected FaxToMailUIContext(FaxToMailConfiguration config) { this.config = config; this.resourceLoader = new RessourceClassLoader(Thread.currentThread().getContextClassLoader()); -// this.serviceContext = new DefaultFaxToMailServiceContext(resourceLoader, config.getServiceConfig()); + this.serviceContext = new FaxToMailServiceContext(); + serviceContext.setApplicationConfig(config); Map<Class, State> additionalStates = Maps.newHashMap(); additionalStates.put(BeanFilterableComboBox.class, new BeanFilterableComboBoxState()); additionalStates.put(BeanDoubleList.class, new BeanDoubleListState()); -// this.swingSession = new SwingSession(getConfig().getUIConfigFile(), false, additionalStates); + this.swingSession = new SwingSession(getConfig().getUIConfigFile(), false, additionalStates); + this.errorHelper = new ApplicationErrorHelper(this) { + + @Override + public void showWarningDialog(String message) { + + JOptionPane.showMessageDialog(context.getActionUI(), "<html><body>" + message + "</body></html>", + t("application.error.ui.business.warning"), + JOptionPane.WARNING_MESSAGE); + } + + @Override + public void showErrorDialog(String message, Throwable cause) { + super.showErrorDialog(message, cause); + } + }; + UIMessageNotifier logMessageNotifier = new UIMessageNotifier() { @Override @@ -183,17 +244,34 @@ this.messageNotifiers = Sets.newHashSet(); addMessageNotifier(logMessageNotifier); - this.errorHelper = new FaxToMailErrorHelper(this); + faxToMailActionFactory = new FaxToMailActionFactory(); + faxToMailActionEngine = new ApplicationActionEngine(faxToMailActionFactory); + } + @Override + public ApplicationConfiguration getConfiguration() { + return config; } + @Override + public Component getBodyUI() { + MainUI mainUI = getMainUI(); + return mainUI == null ? null : mainUI.getBody(); + } + + @Override + public Component getStatusUI() { + MainUI mainUI = getMainUI(); + return mainUI == null ? null : mainUI.getStatus(); + } + //------------------------------------------------------------------------// //-- Open / close methods --// //------------------------------------------------------------------------// public void init() { - config.getServiceConfig().prepareDirectories(); + config.prepareDirectories(); // use our special classLoader (which will read some files from resources from a configuration directory) Thread.currentThread().setContextClassLoader(getResourceLoader()); @@ -219,7 +297,7 @@ // init db configuration //--------------------------------------------------------------------// -// config.getServiceConfig().getPersistenceConfig().initConfig(getResourceLoader()); +// config.initConfig(getResourceLoader()); // // clean db cache (avoid a lots of headache :( // File cacheDirectory = config.getServiceConfig().getPersistenceConfig().getCacheDirectory(); @@ -233,36 +311,36 @@ //--------------------------------------------------------------------// // init i18n //--------------------------------------------------------------------// -// File i18nDirectory = config.getI18nDirectory(); -// if (!config.isFullLaunchMode()) { -// -// i18nDirectory = new File(config.getDataDirectory(), "i18n"); -// -// if (i18nDirectory.exists()) { -// // clean i18n cache -// FaxToMailIOUtil.cleanDirectory( -// i18nDirectory, -// _("faxtomail.i18n.deleteCache.error", i18nDirectory)); -// } -// } -// -// FaxToMailIOUtil.forceMkdir(i18nDirectory, -// _("faxtomail.i18n.mkDir.error", i18nDirectory)); -// -// if (log.isDebugEnabled()) { -// log.debug("I18N directory: " + i18nDirectory); -// } -// -// Locale i18nLocale = config.getI18nLocale(); -// -// if (log.isInfoEnabled()) { -// log.info(String.format("Starts i18n with locale [%s] at [%s]", -// i18nLocale, i18nDirectory)); -// } -// I18n.init(new UserI18nInitializer( -// i18nDirectory, new DefaultI18nInitializer("faxtomail-i18n")), -// i18nLocale); + File i18nDirectory = config.getI18nDirectory(); + if (!config.isFullLaunchMode()) { + i18nDirectory = new File(config.getDataDirectory(), "i18n"); + + if (i18nDirectory.exists()) { + // clean i18n cache + ApplicationIOUtil.cleanDirectory( + i18nDirectory, + t("faxtomail.i18n.deleteCache.error", i18nDirectory)); + } + } + + ApplicationIOUtil.forceMkdir(i18nDirectory, + t("faxtomail.i18n.mkDir.error", i18nDirectory)); + + if (log.isDebugEnabled()) { + log.debug("I18N directory: " + i18nDirectory); + } + + Locale i18nLocale = config.getI18nLocale(); + + if (log.isInfoEnabled()) { + log.info(String.format("Starts i18n with locale [%s] at [%s]", + i18nLocale, i18nDirectory)); + } + I18n.init(new UserI18nInitializer( + i18nDirectory, new DefaultI18nInitializer("faxtomail-i18n")), + i18nLocale); + // //--------------------------------------------------------------------// // // init help // //--------------------------------------------------------------------// @@ -305,36 +383,31 @@ // //--------------------------------------------------------------------// // // init action UI // //--------------------------------------------------------------------// - setActionUI(new FaxToMailActionUI(null, this)); + setActionUI(new ApplicationActionUI(null, this)); } public void open() { setLocale(config.getI18nLocale()); -// boolean dbExists = -// config.getServiceConfig().getPersistenceConfig().isDbExists(); +// boolean dbExists = config.isDbExists(); // // setDbExist(dbExists); -// -// if (!dbExists) { -// -// } -// -// // save back to config -// saveContextToConfig(); -// -// // list when programId or campaingId change to save the configuration -// addPropertyChangeListener(new PropertyChangeListener() { -// -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// -// if (PROPERTIES_TO_SAVE.contains(evt.getPropertyName())) { -// saveContextToConfig(); -// } -// } -// }); + + // save back to config + saveContextToConfig(); + + // list when programId or campaingId change to save the configuration + addPropertyChangeListener(new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + + if (PROPERTIES_TO_SAVE.contains(evt.getPropertyName())) { + saveContextToConfig(); + } + } + }); } @Override @@ -350,13 +423,13 @@ // IOUtils.closeQuietly(serviceContext); // // remove listeners -// PropertyChangeListener[] listeners = getPropertyChangeListeners(); -// for (PropertyChangeListener listener : listeners) { -// if (log.isDebugEnabled()) { -// log.debug("Remove listener: " + listener); -// } -// removePropertyChangeListener(listener); -// } + PropertyChangeListener[] listeners = getPropertyChangeListeners(); + for (PropertyChangeListener listener : listeners) { + if (log.isDebugEnabled()) { + log.debug("Remove listener: " + listener); + } + removePropertyChangeListener(listener); + } setMainUI(null); if (actionUI != null) { @@ -370,9 +443,9 @@ //-- Service methods --// //------------------------------------------------------------------------// -// public DecoratorService getDecoratorService() { -// return serviceContext.getService(DecoratorService.class); -// } + public DecoratorService getDecoratorService() { + return serviceContext.newService(DecoratorService.class); + } //------------------------------------------------------------------------// //-- DataContext methods --// @@ -382,7 +455,7 @@ //-- Config methods --// //------------------------------------------------------------------------// - public FaxToMailApplicationConfig getConfig() { + public FaxToMailConfiguration getConfig() { return config; } @@ -395,7 +468,7 @@ // config.setProgramId(getProgramId()); // config.setCruiseId(getCruiseId()); // config.setProtocolId(getProtocolId()); -// config.setI18nLocale(getLocale()); + config.setI18nLocale(getLocale()); config.save(); } @@ -411,17 +484,31 @@ this.mainUI = mainUI; } - public FaxToMailActionUI getActionUI() { + @Override + public ApplicationActionUI getActionUI() { return actionUI; } - public void setActionUI(FaxToMailActionUI actionUI) { + @Override + public ApplicationActionUI getExistingActionUI() { + while (actionUI == null) { + + try { + Thread.sleep(50); + } catch (InterruptedException e) { + // ignore this one + } + } + return actionUI; + } + + public void setActionUI(ApplicationActionUI actionUI) { this.actionUI = actionUI; } -// public SwingSession getSwingSession() { -// return swingSession; -// } + public SwingSession getSwingSession() { + return swingSession; + } public FaxToMailScreen getScreen() { return screen; @@ -433,24 +520,42 @@ firePropertyChange(PROPERTY_SCREEN, oldValue, screen); } + @Override public boolean isBusy() { return busy; } + @Override public void setBusy(boolean busy) { this.busy = busy; firePropertyChange(PROPERTY_BUSY, null, busy); } + @Override public boolean isHideBody() { return hideBody; } + @Override public void setHideBody(boolean hideBody) { this.hideBody = hideBody; firePropertyChange(PROPERTY_HIDE_BODY, null, hideBody); } + @Override + public Color getColorBlockingLayer() { + return getConfig().getColorBlockingLayer(); + } + + @Override + public ApplicationActionFactory getActionFactory() { + return faxToMailActionFactory; + } + + @Override + public ApplicationActionEngine getActionEngine() { + return faxToMailActionEngine; + } //------------------------------------------------------------------------// //-- UIMessageNotifier methods --// //------------------------------------------------------------------------// Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,11 +1,10 @@ package com.franciaflex.faxtomail.ui.swing; -import com.franciaflex.faxtomail.ui.swing.config.FaxToMailApplicationConfig; +import com.franciaflex.faxtomail.FaxToMailConfiguration; import com.franciaflex.faxtomail.ui.swing.content.MainUI; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; -import com.franciaflex.faxtomail.ui.swing.content.StartAction; +import com.franciaflex.faxtomail.ui.swing.actions.StartAction; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailExceptionHandler; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionHelper; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -34,18 +33,18 @@ log.info("Starting FaxToMail with arguments: " + Arrays.toString(args)); } - // override default exception management (after config init) - Thread.setDefaultUncaughtExceptionHandler(new FaxToMailExceptionHandler()); - // See http://forge.codelutin.com/issues/2055 - //System.setProperty("sun.awt.exception.handler", TuttiExceptionHandler.class.getName()); - // Create configuration - FaxToMailApplicationConfig config = - new FaxToMailApplicationConfig("faxtomail.config", args); + FaxToMailConfiguration config = + new FaxToMailConfiguration("faxtomail.config", args); // Create application context FaxToMailUIContext context = FaxToMailUIContext.newContext(config); + // override default exception management (after config init) + Thread.setDefaultUncaughtExceptionHandler(new FaxToMailExceptionHandler(context.getErrorHelper())); + // See http://forge.codelutin.com/issues/2055 + //System.setProperty("sun.awt.exception.handler", TuttiExceptionHandler.class.getName()); + // prepare context (mainly init configs, i18n) context.init(); @@ -123,9 +122,9 @@ }); // launch start action (use the tutti-start-action file) - StartAction uiAction = FaxToMailActionHelper.createLogicAction( + StartAction uiAction = context.getActionFactory().createLogicAction( mainUI.getHandler(), StartAction.class); - FaxToMailActionHelper.runAction(uiAction); + context.getActionEngine().runAction(uiAction); } public static void closeFaxToMail(MainUIHandler handler, Integer exitCode) { Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java (from rev 2, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractChangeScreenAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,94 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; +import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.context.JAXXContextEntryDef; + +/** + * Action to change the screen. + * <p/> + * Will just check that the current screen can be quit via + * the {@link com.franciaflex.faxtomail.ui.swing.content.MainUIHandler#quitCurrentScreen()}. + * <p/> + * + * @author kmorin <kmorin@codelutin.com> + * @since 1.0 + */ +public abstract class AbstractChangeScreenAction extends AbstractMainUIFaxToMailAction { + + /** + * Context entry to keep previous screen. + * + * @since 1.1 + */ + protected static final JAXXContextEntryDef<FaxToMailScreen> PREVIOUS_SCREEN = + SwingUtil.newContextEntryDef("previousScreen", FaxToMailScreen.class); + + /** + * Screen where to go. + * + * @since 1.0 + */ + protected FaxToMailScreen screen; + + /** + * Flag to skip the check of current screen. + * + * @since 1.1 + */ + protected boolean skipCheckCurrentScreen; + + protected AbstractChangeScreenAction(MainUIHandler handler, + boolean hideBody, + FaxToMailScreen screen) { + super(handler, hideBody); + this.screen = screen; + } + + public void setSkipCheckCurrentScreen(boolean skipCheckCurrentScreen) { + this.skipCheckCurrentScreen = skipCheckCurrentScreen; + } + + protected void setScreen(FaxToMailScreen screen) { + this.screen = screen; + } + + @Override + public boolean prepareAction() throws Exception { + boolean result = super.prepareAction(); + result &= skipCheckCurrentScreen || getHandler().quitCurrentScreen(); + return result; + } + + @Override + public void doAction() throws Exception { + + FaxToMailUIContext context = getContext(); + + FaxToMailScreen previousScreen = context.getScreen(); + if (getUI() != null) { + if (previousScreen == null) { + PREVIOUS_SCREEN.removeContextValue(getUI()); + } else { + PREVIOUS_SCREEN.setContextValue(getUI(), previousScreen); + } + } + + // clean current screen + context.setScreen(null); + + // change screen + context.setScreen(screen); + } + + @Override + public void postFailedAction(Throwable error) { + if (error != null) { + +// getContext().setFallBackScreen(); + } + } + +} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/AbstractFaxToMailAction.java 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,334 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.action; - -import com.franciaflex.faxtomail.persistence.ProgressionModel; -import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.config.FaxToMailApplicationConfig; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI; -import com.google.common.base.Preconditions; -import jaxx.runtime.FileChooserUtil; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.beans.AbstractBean; -import org.nuiton.decorator.Decorator; - -import javax.swing.*; -import java.io.File; - -import static org.nuiton.i18n.I18n._; - -/** - * FaxToMail base action. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public abstract class AbstractFaxToMailAction<M extends AbstractBean, UI extends FaxToMailUI<M, ?>, H extends AbstractFaxToMailUIHandler<M, UI>> - extends AbstractBean { - - /** Logger. */ - private static final Log log = LogFactory.getLog(AbstractFaxToMailAction.class); - - public static final String PROPERTY_DONE = "done"; - - protected final H handler; - - protected String actionDescription; - - protected final boolean hideBody; - - protected final Object lock = new Object(); - - public abstract void doAction() throws Exception; - - protected AbstractFaxToMailAction(H handler, boolean hideBody) { - this.handler = handler; - this.hideBody = hideBody; - } - - public boolean prepareAction() throws Exception { - // by default nothing to prepare - return true; - } - - protected void releaseAction() { - // by default nothing to clean - firePropertyChange(PROPERTY_DONE, null, true); - } - - public void postSuccessAction() { - // by default nothing to do after action - } - - public void postFailedAction(Throwable error) { - // by default nothing to do after action - } - - public H getHandler() { - return handler; - } - - public M getModel() { - return handler.getModel(); - } - - public final UI getUI() { - return handler.getUI(); - } - - public FaxToMailUIContext getContext() { - return handler.getContext(); - } - - public String getActionDescription() { - return actionDescription; - } - - public void setActionDescription(String actionDescription) { - this.actionDescription = actionDescription; - } - - public void setProgressionModel(ProgressionModel progressionModel) { - getContext().getActionUI().getModel().setProgressionModel(progressionModel); - } - - protected ProgressionModel getProgressionModel() { - return getContext().getActionUI().getModel().getProgressionModel(); - } - - public boolean isHideBody() { - return hideBody; - } - -// public TuttiDataContext getDataContext() { -// return getContext().getDataContext(); -// } - -// protected FaxToMailApplicationConfig getConfig() { -// return getContext().getConfig(); -// } - - protected void sendMessage(String message) { - getContext().showInformationMessage(message); - } - -// protected <O> Decorator<O> getDecorator(Class<O> type, String name) { -// Decorator<O> decorator = handler.getDecorator(type, name); -// Preconditions.checkNotNull(decorator); -// return decorator; -// } - -// protected String decorate(Object object) { -// return getDecorator(object.getClass(), null).toString(object); -// } -// -// protected String decorate(Object object, String context) { -// return getDecorator(object.getClass(), context).toString(object); -// } - -// protected boolean askAdminPassword(String askMessage, -// String askMessageTitle, -// String errorMessage, -// String errorMessageTitle) { -// -// Component container = getContext().getActionUI(); -// -// String answer; -// boolean result; -// do { -// answer = JOptionPane.showInputDialog(container, -// askMessage, -// askMessageTitle, -// JOptionPane.WARNING_MESSAGE); -// if (answer != null) { -// String cryptedAnswer = StringUtil.encodeMD5(answer); -// String correctAnswer = getConfig().getAdminPassword(); -// result = StringUtils.equals(cryptedAnswer, correctAnswer); -// -// if (!result) { -// JOptionPane.showMessageDialog(container, -// errorMessage, -// errorMessageTitle, -// JOptionPane.ERROR_MESSAGE); -// } -// -// } else { -// result = false; -// } -// -// } while (!result && answer != null); -// return result; -// } - - /** - * Choisir un fichier via un sélecteur graphique de fichiers. - * - * @param title le titre du dialogue de sélection - * @param buttonLabel le label du boutton d'acceptation - * @param filters les filtres + descriptions sur le sélecteur de - * fichiers - * @return le fichier choisi ou le fichier incoming si l'opération a été - * annulée - */ - protected File chooseFile(String title, - String buttonLabel, - String... filters) { - - File file = FileChooserUtil.getFile(title, - buttonLabel, - getContext().getMainUI(), - filters); - if (log.isDebugEnabled()) { - log.debug(title + " : " + file); - } - if (file != null) { - File newDir = file.isDirectory() ? file : file.getParentFile(); - FileChooserUtil.setCurrentDirectory(newDir); - } - return file; - } - - /** - * Sauver un fichier via un sélecteur graphique de fichiers. - * - * @param title le titre du dialogue de sélection - * @param buttonLabel le label du boutton d'acceptation - * @param filters les filtres + descriptions sur le sélecteur de - * fichiers - * @return le fichier choisi ou {@code null} si pas de fichier choisi ou - * pas voulu écrasé un fichier existant. - */ - protected File saveFile(File defaultFile, - String filename, - String extension, - String title, - String buttonLabel, - String... filters) { - - if (defaultFile != null && FileChooserUtil.isCurrentDirectoryDefault()) { - - // set default directory to this one - FileChooserUtil.setCurrentDirectory(defaultFile); - } - File file = saveFile(filename, extension, title, buttonLabel, filters); - return file; - } - - /** - * Sauver un fichier via un sélecteur graphique de fichiers. - * - * @param title le titre du dialogue de sélection - * @param buttonLabel le label du boutton d'acceptation - * @param filters les filtres + descriptions sur le sélecteur de - * fichiers - * @return le fichier choisi ou {@code null} si pas de fichier choisi ou - * pas voulu écrasé un fichier existant. - */ - protected File saveFile(String filename, - String extension, - String title, - String buttonLabel, - String... filters) { - - boolean withExtension = StringUtils.isNotBlank(extension); - String filenameSuffix = withExtension ? "." + extension : ""; - File file = FileChooserUtil.saveFile(filename + filenameSuffix, title, buttonLabel, getContext().getMainUI(), filters); - if (log.isDebugEnabled()) { - log.debug(title + " : " + file); - } - if (file != null) { - Preconditions.checkState(!file.isDirectory()); - - // add extension if missing - if (withExtension && !file.getName().endsWith(filenameSuffix)) { - file = new File(file.getParentFile(), file.getName() + filenameSuffix); - } - - // ask user to confirm overwrite. - boolean confirm = askOverwriteFile(file); - - if (confirm) { - - // on conserve le répertoire (pour une prochaine utilisation) - FileChooserUtil.setCurrentDirectory(file.getParentFile()); - } else { - - // l'utilisateur n'a pas confirmé l'écrasement - // donc pas de fichier en retour - file = null; - } - } - - return file; - } - - protected boolean askOverwriteFile(File file) { - boolean result; - if (file.exists()) { - - // file exists ask user to overwrite - String htmlMessage = String.format( - AbstractFaxToMailUIHandler.CONFIRMATION_FORMAT, - _("faxtomail.common.askOverwriteFile.message", file), - _("faxtomail.common.askOverwriteFile.help")); - - result = JOptionPane.showConfirmDialog( - getHandler().getTopestUI(), - htmlMessage, - _("faxtomail.common.askOverwriteFile.title"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION; - } else { - - // file does not exist - result = true; - } - return result; - } - - protected boolean askBeforeDelete(String title, String message) { - String htmlMessage = String.format( - AbstractFaxToMailUIHandler.CONFIRMATION_FORMAT, - message, - _("faxtomail.common.askBeforeDelete.help")); - int i = JOptionPane.showConfirmDialog( - getHandler().getTopestUI(), - htmlMessage, - title, - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE); - - boolean result = i == JOptionPane.OK_OPTION; - return result; - } - - protected void displayInfoMessage(String title, String message) { - JOptionPane.showMessageDialog( - getHandler().getTopestUI(), - message, - title, - JOptionPane.INFORMATION_MESSAGE); - } - - protected void displayWarningMessage(String title, String message) { - JOptionPane.showMessageDialog( - getHandler().getTopestUI(), - message, - title, - JOptionPane.WARNING_MESSAGE); - } - - protected void createProgressionModelIfRequired(int total) { - ProgressionModel progressionModel = getProgressionModel(); - if (progressionModel==null) { - progressionModel = new ProgressionModel(); - progressionModel.setTotal(total); - progressionModel.setMessage(""); - progressionModel.setCurrent(0); - setProgressionModel(progressionModel); - } else { - progressionModel.adaptTotal(total); - } - } -} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java (from rev 6, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/AbstractFaxToMailAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractFaxToMailAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,104 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.FaxToMailConfiguration; +import com.franciaflex.faxtomail.persistence.ProgressionModel; +import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; +import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; +import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI; +import org.jdesktop.beans.AbstractBean; +import org.nuiton.jaxx.application.swing.action.AbstractApplicationAction; + +import javax.swing.*; +import java.awt.*; + +/** + * FaxToMail base action. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public abstract class AbstractFaxToMailAction <M extends AbstractBean, UI extends FaxToMailUI<M, ?>, H extends AbstractFaxToMailUIHandler<M, UI>> + extends AbstractApplicationAction<M, UI, H> { + + public abstract void doAction() throws Exception; + + protected AbstractFaxToMailAction(H handler, boolean hideBody) { + super(handler, hideBody); + } + + @Override + public FaxToMailUIContext getContext() { + return handler.getContext(); + } + + public void setProgressionModel(ProgressionModel progressionModel) { + super.setProgressionModel(progressionModel); + } + + @Override + protected ProgressionModel getProgressionModel() { + return (ProgressionModel) getContext().getActionUI().getModel().getProgressionModel(); + } + +// public FaxToMailDataContext getDataContext() { +// return getContext().getDataContext(); +// } + + @Override + protected FaxToMailConfiguration getConfig() { + return getContext().getConfig(); + } + + @Override + protected void sendMessage(String message) { + getContext().showInformationMessage(message); + } + + @Override + protected void createProgressionModelIfRequired(int total) { + ProgressionModel progressionModel = getProgressionModel(); + if (progressionModel == null) { + progressionModel = new ProgressionModel(); + progressionModel.setTotal(total); + progressionModel.setMessage(""); + progressionModel.setCurrent(0); + setProgressionModel(progressionModel); + } else { + progressionModel.adaptTotal(total); + } + } + + protected boolean askAdminPassword(String askMessage, + String askMessageTitle, + String errorMessage, + String errorMessageTitle) { + + Component container = getContext().getActionUI(); + + String answer; + boolean result; + do { + answer = JOptionPane.showInputDialog(container, + askMessage, + askMessageTitle, + JOptionPane.WARNING_MESSAGE); +// if (answer != null) { +// String cryptedAnswer = StringUtil.encodeMD5(answer); +// String correctAnswer = getConfig().getAdminPassword(); +// result = StringUtils.equals(cryptedAnswer, correctAnswer); +// +// if (!result) { +// JOptionPane.showMessageDialog(container, +// errorMessage, +// errorMessageTitle, +// JOptionPane.ERROR_MESSAGE); +// } +// +// } else { + result = false; +// } + + } while (!result && answer != null); + return result; + } +} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractMainUIFaxToMailAction.java (from rev 4, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractMainUIFaxToMailAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractMainUIFaxToMailAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractMainUIFaxToMailAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,17 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; +import com.franciaflex.faxtomail.ui.swing.content.MainUI; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; + +/** + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public abstract class AbstractMainUIFaxToMailAction extends AbstractFaxToMailAction<FaxToMailUIContext, MainUI, MainUIHandler> { + + protected AbstractMainUIFaxToMailAction(MainUIHandler handler, + boolean hideBody) { + super(handler, hideBody); + } +} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/CloseApplicationAction.java (from rev 6, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/CloseApplicationAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/CloseApplicationAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/CloseApplicationAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,42 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.RunFaxToMail; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; + +import static org.nuiton.i18n.I18n.t; + +/** + * To close FaxToMail Application. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class CloseApplicationAction extends AbstractChangeScreenAction { + + protected int exitCode = RunFaxToMail.NORMAL_EXIT_CODE; + + public CloseApplicationAction(MainUIHandler handler) { + super(handler, false, null); + setSkipCheckCurrentScreen(true); + setActionDescription(t("faxtomail.main.action.exit.tip")); + } + + public void setExitCode(int exitCode) { + this.exitCode = exitCode; + } + + @Override + public void doAction() throws Exception { + + super.doAction(); + + RunFaxToMail.closeFaxToMail(getHandler(), exitCode); + } + + + @Override + public void releaseAction() { + exitCode = RunFaxToMail.NORMAL_EXIT_CODE; + super.releaseAction(); + } +} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionException.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/FaxToMailActionException.java 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionException.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,34 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.action; - -/** - * To box any error of a {@link AbstractFaxToMailAction}. - * - * @author kmorin - * @since 0.1 - */ -public class FaxToMailActionException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - private final AbstractFaxToMailAction action; - - public FaxToMailActionException(AbstractFaxToMailAction action, Throwable cause) { - super(cause); - this.action = action; - } - - public static FaxToMailActionException propagateError(AbstractFaxToMailAction action, - Throwable cause) { - FaxToMailActionException result; - if (cause instanceof FaxToMailActionException) { - result = ((FaxToMailActionException) cause); - } else { - result = new FaxToMailActionException(action, cause); - } - return result; - } - - public AbstractFaxToMailAction getAction() { - return action; - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionHelper.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/FaxToMailActionHelper.java 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionHelper.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,123 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.action; - -import com.franciaflex.faxtomail.FaxToMailTechnicalException; -import com.franciaflex.faxtomail.ui.swing.content.AbstractMainUIFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import com.google.common.base.Preconditions; -import org.apache.commons.lang3.reflect.ConstructorUtils; - -import javax.swing.*; - -import static org.nuiton.i18n.I18n._; - -/** - * Useful method around FaxToMailUIAction. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.2 - */ -public class FaxToMailActionHelper { - - public static <A extends AbstractFaxToMailAction> void runInternalAction(A action) { - Throwable error = null; - - try { - action.doAction(); - action.postSuccessAction(); - } catch (Throwable e) { - error = e; - throw FaxToMailActionException.propagateError(action, e); - } finally { - try { - if (error != null) { - action.postFailedAction(error); - } - } finally { - - action.releaseAction(); - } - } - } - - public static <A extends AbstractFaxToMailAction> void runInternalAction(AbstractFaxToMailUIHandler handler, - Class<A> actionName) { - A action = createLogicAction(handler, actionName); - runInternalAction(action); - } - - public static <A extends AbstractFaxToMailAction> void runAction(A action) { - FaxToMailUIAction<A> uiAction = createUIAction(null, action); - uiAction.actionPerformed(null); - } - - public static void runAction(AbstractButton button) { - button.getAction().actionPerformed(null); - } - - public static <A extends AbstractFaxToMailAction> void runActionAndWait(A action) { - FaxToMailUIAction<A> uiAction = createUIAction(null, action); - uiAction.launchActionAndWait(); - } - - public static <A extends AbstractFaxToMailAction> void runActionAndWait(AbstractFaxToMailUIHandler handler, - Class<A> actionName) { - A logicAction = createLogicAction(handler, actionName); - runActionAndWait(logicAction); - } - - public static <A extends AbstractFaxToMailAction> FaxToMailUIAction<A> createUIAction(AbstractFaxToMailUIHandler handler, - Class<A> actionName) { - return createUIAction(handler, null, actionName); - } - - - public static <A extends AbstractFaxToMailAction> FaxToMailUIAction<A> createUIAction(AbstractFaxToMailUIHandler handler, - AbstractButton abstractButton, - Class<A> actionName) { - try { - - // create logic action - A logicAction = createLogicAction(handler, actionName); - - // create ui action - FaxToMailUIAction<A> result = createUIAction(abstractButton, logicAction); - return result; - } catch (Exception e) { -// throw new FaxToMailTechnicalException(_("tutti.action.create.error", actionName), e); - } - return null; - } - - public static <A extends AbstractFaxToMailAction> FaxToMailUIAction<A> createUIAction(AbstractButton abstractButton, - A logicAction) { - - // create ui action - FaxToMailUIAction<A> result = new FaxToMailUIAction<A>(abstractButton, - logicAction); - return result; - } - - public static <A extends AbstractFaxToMailAction> A createLogicAction(AbstractFaxToMailUIHandler handler, - Class<A> actionName) { - try { - - if (AbstractMainUIFaxToMailAction.class.isAssignableFrom(actionName) && - handler.getContext().getMainUI() != null) { - handler = handler.getContext().getMainUI().getHandler(); - } - - // create action - A result = ConstructorUtils.invokeConstructor(actionName, handler); - return result; - } catch (Exception e) { - throw new FaxToMailTechnicalException(_("faxtomail.action.create.error", actionName), e); - } - } - - public static <A extends AbstractFaxToMailAction> A getLogicAction(AbstractButton b) { - Action action = b.getAction(); - Preconditions.checkNotNull(action); - Preconditions.checkState(action instanceof FaxToMailUIAction); - return ((FaxToMailUIAction<A>) action).getLogicAction(); - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionSwingWorker.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/FaxToMailActionSwingWorker.java 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionSwingWorker.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,161 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.action; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.*; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Timer; -import java.util.TimerTask; - -/** - * Worker to execute logic action. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0.3 - */ -public class FaxToMailActionSwingWorker<A extends AbstractFaxToMailAction> extends SwingWorker<Void, String> { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(FaxToMailActionSwingWorker.class); - - /** - * Timer used to launch timerTask (to open load dialog). - * - * @since 1.0.2 - */ - private static final Timer t = new Timer(); - - protected final FaxToMailActionUI actionUI; - - protected final A action; - - protected Throwable error; - - protected TimerTask timer; - - protected FaxToMailActionSwingWorker(A action) { - - this.action = action; - this.actionUI = action.getContext().getActionUI(); - } - - public Throwable getError() { - return error; - } - - public boolean isFailed() { - return error != null; - } - - @Override - protected Void doInBackground() throws Exception { - - if (!isCancelled()) { - - timer = new FaxToMailActionTimerTask(); - - t.schedule(timer, 1000); - - try { - - action.doAction(); - - } catch (Throwable e) { - if (log.isErrorEnabled()) { - log.error("Task [" + this + "] Error while doAction: ", e); - } - error = e; - } finally { - if (log.isDebugEnabled()) { - log.debug("Task [" + this + "] done"); - } - } - } - return null; - } - - @Override - protected void done() { - super.done(); - - if (log.isDebugEnabled()) { - log.debug("Task [" + this + "] execute done method after all"); - } - - if (error == null) { - - // success hook - action.postSuccessAction(); - } else { - - // fail hook - action.postFailedAction(error); - } - - action.releaseAction(); - - if (timer != null) { - - timer.cancel(); - } - - actionUI.close(); - - updateBusyState(false); - } - - protected void updateBusyState(boolean busy) { - - boolean hideBody = action.isHideBody(); - - action.getContext().setBusy(busy); - - if (hideBody) { - action.getContext().setHideBody(!busy); - } - - } - - protected class FaxToMailActionTimerTask extends TimerTask { - - public FaxToMailActionTimerTask() { - action.addPropertyChangeListener(AbstractFaxToMailAction.PROPERTY_DONE, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - if (actionUI.isVisible()) { - actionUI.close(); - } - - // we do NOT want the timer to wake up then the actionUI dialog - cancel(); - } - }); - } - - @Override - public void run() { - if (isCancelled() || isDone()) { - - if (log.isDebugEnabled()) { - log.debug("Task [" + action + "] was already canceled or done, do nothing"); - } - } else { - - if (log.isDebugEnabled()) { - log.debug("Task [" + action + "] is started, show waiting dialog"); - } - - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - actionUI.open(action); - } - }); - } - } - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/FaxToMailActionUI.css 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUI.css 2014-02-06 16:42:22 UTC (rev 7) @@ -1,45 +0,0 @@ - -#busyBlockLayerUI { - useIcon:false; - blockingColor: {handler.getConfig().getColorBlockingLayer()}; - block:{true}; -} - -#globalPanel { - border: {new TitledBorder((String) null)}; -} - -#globalActionLabel { - border: {new EmptyBorder(5, 5, 5, 5)}; -} - -#globalProgressBar { - indeterminate: true; -} - -#taskPanel { - visible: false; - border: {new TitledBorder((String) null)}; -} - -#taskProgressBar { - indeterminate: false; -} - -#taskActionLabel { - border: {new EmptyBorder(5, 5, 5, 5)}; -} - -#informationPanel { - visible: false; - border: {new TitledBorder((String) null)}; -} - -#informationLabel { - border: {new EmptyBorder(5, 5, 5, 5)}; -} - -#okAction { - actionIcon: information; - text: "faxtomail.action.ok"; -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/FaxToMailActionUI.jaxx 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUI.jaxx 2014-02-06 16:42:22 UTC (rev 7) @@ -1,59 +0,0 @@ -<JDialog width='300' height='200' modal='true' - undecorated='true' - implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<FaxToMailActionUIModel, FaxToMailActionUIHandler>'> - <import> - - com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI - com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext - - jaxx.runtime.swing.BlockingLayerUI - - javax.swing.border.EmptyBorder - </import> - - <script><![CDATA[ - - public FaxToMailActionUI(JFrame frame, FaxToMailUIContext context) { - super(frame, true); - FaxToMailActionUIHandler handler = new FaxToMailActionUIHandler(context, this); - setContextValue(handler); - handler.beforeInitUI(); - } - - public void open(AbstractFaxToMailAction action) { - getModel().setAction(action); - } - - public void close() { - getModel().clear(); - } - - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } - ]]></script> - - - <BlockingLayerUI id='busyBlockLayerUI'/> - - <FaxToMailActionUIHandler id='handler' - initializer='getContextValue(FaxToMailActionUIHandler.class)'/> - - <FaxToMailActionUIModel id='model' - initializer='getContextValue(FaxToMailActionUIModel.class)'/> - - <JPanel id='rootPanel' layout='{new BorderLayout()}' - constraints='BorderLayout.CENTER' decorator='boxed'> - <JPanel id='globalPanel' constraints='BorderLayout.NORTH' - layout='{new BorderLayout()}'> - <JLabel id='globalActionLabel' constraints='BorderLayout.CENTER'/> - <JProgressBar id='globalProgressBar' constraints='BorderLayout.SOUTH'/> - </JPanel> - <JPanel id='taskPanel' constraints='BorderLayout.CENTER' - layout='{new BorderLayout()}'> - <JLabel id='taskActionLabel' constraints='BorderLayout.CENTER'/> - <JProgressBar id='taskProgressBar' constraints='BorderLayout.SOUTH'/> - </JPanel> - </JPanel> - -</JDialog> \ No newline at end of file Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/FaxToMailActionUIHandler.java 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUIHandler.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,251 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.action; - -import com.franciaflex.faxtomail.persistence.ProgressionModel; -import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.content.MainUI; -import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; -import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.StatusMessagePanel; -import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.awt.event.ComponentListener; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -import static org.nuiton.i18n.I18n._; - -/** - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class FaxToMailActionUIHandler extends AbstractFaxToMailUIHandler<FaxToMailActionUIModel, FaxToMailActionUI> { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(FaxToMailActionUIHandler.class); - - public FaxToMailActionUIHandler(FaxToMailUIContext context, FaxToMailActionUI ui) { - super(context, ui); - } - - protected PropertyChangeListener progressionListener = new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - String propertyName = evt.getPropertyName(); - if (ProgressionModel.PROPERTY_MESSAGE.equals(propertyName)) { - - // change message - String newMessage = (String) evt.getNewValue(); - ui.getTaskActionLabel().setText("<html><body>" + newMessage + "</body></html>"); - ui.pack(); - } else if (ProgressionModel.PROPERTY_TOTAL.equals(propertyName)) { - - // change total progressbar max - ui.getTaskProgressBar().setMaximum((Integer) evt.getNewValue()); - - } else if (ProgressionModel.PROPERTY_CURRENT.equals(propertyName)) { - - // change value of progress bar - ui.getTaskProgressBar().setValue((Integer) evt.getNewValue()); - } - } - }; - - protected ComponentListener listener = new ComponentAdapter() { - boolean moving; - - boolean resizing; - - @Override - public void componentMoved(ComponentEvent e) { - - MainUI mainUI = (MainUI) e.getSource(); - - if (!moving && mainUI.isShowing()) { - - moving = true; - try { - setLocation(mainUI); - } finally { - moving = false; - } - } - } - - @Override - public void componentResized(ComponentEvent e) { - - MainUI mainUI = (MainUI) e.getSource(); - - if (!resizing && mainUI.isShowing()) { - - resizing = true; - try { - setSize(mainUI); - } finally { - resizing = false; - } - } - } - }; - - //------------------------------------------------------------------------// - //-- AbstractTuttiUIHandler methods --// - //------------------------------------------------------------------------// - - @Override - public void beforeInitUI() { - FaxToMailActionUIModel model = new FaxToMailActionUIModel(); - ui.setContextValue(model); - - model.addPropertyChangeListener(FaxToMailActionUIModel.PROPERTY_ACTION, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - // udpate global label - AbstractFaxToMailAction action = (AbstractFaxToMailAction) evt.getNewValue(); - - if (log.isDebugEnabled()) { - log.debug("Action to use: " + action); - } - if (action == null) { - - // stoping action - hideAction(); - } else { - - // starting action - showAction(action); - } - } - }); - - model.addPropertyChangeListener(FaxToMailActionUIModel.PROPERTY_PROGRESSION_MODEL, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - // change progression model - - ProgressionModel oldValue = (ProgressionModel) evt.getOldValue(); - ProgressionModel newValue = (ProgressionModel) evt.getNewValue(); - - if (log.isDebugEnabled()) { - log.debug("progression model: " + newValue); - } - if (oldValue != null) { - oldValue.removePropertyChangeListener(progressionListener); - } - - if (newValue == null) { - - // remove progression model - ui.getTaskPanel().setVisible(false); - } else { - - // use progression model - ui.getTaskPanel().setVisible(true); - - newValue.addPropertyChangeListener(progressionListener); - } - } - }); - } - - @Override - public void afterInitUI() { - - initUI(ui); - - // installation layer de blocage en mode busy - SwingUtil.setLayerUI(ui.getRootPanel(), ui.getBusyBlockLayerUI()); - - ui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - } - - @Override - protected JComponent getComponentToFocus() { - return null; - } - - @Override - public void onCloseUI() { - - } - - @Override - public SwingValidator<FaxToMailActionUIModel> getValidator() { - return null; - } - - //------------------------------------------------------------------------// - //-- Internal methods --// - //------------------------------------------------------------------------// - - protected void hideAction() { - ui.setVisible(false); - } - - protected void showAction(AbstractFaxToMailAction action) { - ui.setTitle(_("faxtomail.main.title.action", -// getConfig().getVersion(), - "0.1", - action.getActionDescription())); - ui.getGlobalActionLabel().setText( - _("faxtomail.message.action.running", - action.getActionDescription())); - ui.pack(); - - MainUI mainUI = getContext().getMainUI(); - if (mainUI != null) { - mainUI.addComponentListener(listener); - - setLocation(mainUI); - setSize(mainUI); - } - try { - ui.setVisible(true); - } finally { - if (mainUI != null) { - mainUI.removeComponentListener(listener); - } - } - } - - protected void setLocation(MainUI mainUI) { - Container component = mainUI.getBody(); - StatusMessagePanel status = mainUI.getStatus(); - int width = component == null ? 0 : component.getWidth(); - int height = component == null ? 0 : component.getHeight() + status.getHeight(); - - int x; - int y; - if (height == 0) { - x = mainUI.getX() + 5; - y = mainUI.getY() + 15; - } else { - x = mainUI.getX() + (mainUI.getWidth() - width); - y = mainUI.getY() + (mainUI.getHeight() - height); - } - ui.setLocation(x, y); - } - - protected void setSize(MainUI mainUI) { - // Better to let his own size to the action progress bar - // see http://forge.codelutin.com/issues/3263 -// Container component = mainUI.getBody(); -// int width = component == null ? 0 : component.getWidth(); - - ui.pack(); - -// if (width != 0 && ui.getWidth() < width) { -// ui.setSize(width, ui.getHeight()); -// } - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/FaxToMailActionUIModel.java 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailActionUIModel.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,51 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.action; - -import com.franciaflex.faxtomail.persistence.ProgressionModel; -import com.google.common.base.Preconditions; -import org.jdesktop.beans.AbstractSerializableBean; - -/** - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class FaxToMailActionUIModel extends AbstractSerializableBean { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_ACTION = "action"; - - public static final String PROPERTY_PROGRESSION_MODEL = "progressionModel"; - - protected AbstractFaxToMailAction action; - - protected ProgressionModel progressionModel; - - public ProgressionModel getProgressionModel() { - return progressionModel; - } - - public void setProgressionModel(ProgressionModel progressionModel) { - Object oldValue = getProgressionModel(); - this.progressionModel = progressionModel; - firePropertyChange(PROPERTY_PROGRESSION_MODEL, oldValue, progressionModel); - } - - public AbstractFaxToMailAction getAction() { - return action; - } - - public void setAction(AbstractFaxToMailAction action) { - Preconditions.checkNotNull(action, "action can not be null"); - Object oldValue = getAction(); - this.action = action; - firePropertyChange(PROPERTY_ACTION, oldValue, action); - } - - public void clear() { -// setProgressionModel(null); - - Object oldValue = getAction(); - action = null; - firePropertyChange(PROPERTY_ACTION, oldValue, null); - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailUIAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/action/FaxToMailUIAction.java 2014-02-05 18:34:13 UTC (rev 4) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/FaxToMailUIAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,201 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.action; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.util.TimeLog; - -import javax.swing.*; -import java.awt.event.ActionEvent; -import java.util.concurrent.CancellationException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * Abstract FaxToMail ui action which launch a {@link AbstractFaxToMailAction}. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0.2 - */ -public class FaxToMailUIAction<A extends AbstractFaxToMailAction> extends AbstractAction { - - private static final long serialVersionUID = 1L; - - /** Logger. */ - private static final Log log = LogFactory.getLog(FaxToMailUIAction.class); - - private static final TimeLog TIME_LOG = new TimeLog(FaxToMailUIAction.class); - - public static final ExecutorService waitingThread = - Executors.newSingleThreadExecutor(); - - private static final String LOGIC_ACTION = "logicAction"; - - private final Object lock = new Object(); - - private boolean wait; - - private long t0; - - public FaxToMailUIAction(AbstractButton button, A action) { - - putValue(LOGIC_ACTION, action); - - // fill the ui action from the button - setActionKey(action.getClass().getName()); - if (button != null) { - setActionIcon(button.getIcon()); - setActionName(button.getText()); - setActionDescription(button.getToolTipText()); - setActionMnemonic(button.getMnemonic()); - } - } - - public void launchActionAndWait() { - wait = true; - actionPerformed(null); - lock(); - } - - - @Override - public final void actionPerformed(final ActionEvent event) { - - t0 = TimeLog.getTime(); - - if (log.isInfoEnabled()) { - log.info("Task [" + getLogicAction().getClass().getSimpleName() + "] starting"); - } - - // prepare action - boolean doAction; - - A action = getLogicAction(); - - // reset status message -// action.sendMessage(""); - - try { - doAction = action.prepareAction(); - } catch (Exception e) { - action.releaseAction(); - throw FaxToMailActionException.propagateError(action, e); - } - - if (doAction) { - - final FaxToMailActionSwingWorker<A> worker = - new FaxToMailActionSwingWorker<A>(action); - - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - - // make ui busy - worker.updateBusyState(true); - - } - }); - - if (log.isDebugEnabled()) { - log.debug("Before execute of action " + action); - } - - // perform and release action - worker.execute(); - - // wait until action is done - waitingThread.execute( - new Runnable() { - @Override - public void run() { - - A action = getLogicAction(); - try { - try { - worker.get(); - } catch (ExecutionException e) { - // don't care . - } catch (CancellationException e) { - // dont care ? - } catch (InterruptedException e) { - // don't care ? - } - if (log.isDebugEnabled()) { - log.debug("After execute of action " + action + " (worker done? " + worker.isDone() + ")"); - } - - if (worker.isFailed()) { - - throw FaxToMailActionException.propagateError(action, worker.getError()); - } - } finally { - unlock(); - } - } - } - ); - - } else { - - try { - // release action - action.releaseAction(); - - } finally { - unlock(); - } - } - } - - public void setActionIcon(Icon actionIcon) { - putValue(SMALL_ICON, actionIcon); - putValue(LARGE_ICON_KEY, actionIcon); - } - - public void setActionKey(String actionKey) { - putValue(ACTION_COMMAND_KEY, actionKey); - } - - public void setActionName(String actionName) { - putValue(NAME, actionName); - } - - public void setActionDescription(String actionDescription) { - putValue(SHORT_DESCRIPTION, actionDescription); - getLogicAction().setActionDescription(actionDescription); - } - - public void setActionMnemonic(int key) { - putValue(MNEMONIC_KEY, key); - } - - public A getLogicAction() { - return (A) getValue(LOGIC_ACTION); - } - - protected void lock() { - if (wait) { - synchronized (lock) { - try { - - lock.wait(); - - } catch (InterruptedException e) { - throw FaxToMailActionException.propagateError(getLogicAction(), e); - } finally { - wait = false; - } - } - } - } - - protected void unlock() { - TIME_LOG.log(t0, "Task [" + getLogicAction().getClass().getSimpleName() + "] End"); - if (wait) { - synchronized (lock) { - lock.notifyAll(); - } - } - } -} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GoToPreviousScreenAction.java (from rev 6, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/GoToPreviousScreenAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GoToPreviousScreenAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/GoToPreviousScreenAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,22 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; + +import static org.nuiton.i18n.I18n.t; + +/** + * To return on previous screen. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class GoToPreviousScreenAction extends AbstractChangeScreenAction { + + public GoToPreviousScreenAction(MainUIHandler handler) { + super(handler, + true, + PREVIOUS_SCREEN.getContextValue(handler.getUI()) + ); + setActionDescription(t("faxtomail.main.action.goto.previousScreen.tip")); + } +} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReloadFaxToMailAction.java (from rev 6, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ReloadFaxToMailAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReloadFaxToMailAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReloadFaxToMailAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,28 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.RunFaxToMail; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; + +import static org.nuiton.i18n.I18n.t; + +/** + * To reload FaxToMail application. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0.3 + */ +public class ReloadFaxToMailAction extends AbstractChangeScreenAction { + + public ReloadFaxToMailAction(MainUIHandler handler) { + super(handler, true, null); + setActionDescription(t("faxtomail.main.action.reloadFaxToMail")); + } + + @Override + public void doAction() throws Exception { + + // Close the application, will exit and restart application + RunFaxToMail.closeFaxToMail(getHandler(), RunFaxToMail.UPATE_EXIT_CODE); + } + +} \ No newline at end of file Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowConfigAction.java (from rev 2, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowConfigAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowConfigAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowConfigAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,17 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; + +/** + * To show config screen. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class ShowConfigAction extends AbstractChangeScreenAction { + + public ShowConfigAction(MainUIHandler handler) { + super(handler, true, FaxToMailScreen.CONFIG); + } +} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java (from rev 2, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,17 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; + +/** + * To show demande screen. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class ShowDemandeAction extends AbstractChangeScreenAction { + + public ShowDemandeAction(MainUIHandler handler) { + super(handler, true, FaxToMailScreen.DEMANDE); + } +} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeListAction.java (from rev 2, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeListAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeListAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeListAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,17 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; + +/** + * To show demande screen. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class ShowDemandeListAction extends AbstractChangeScreenAction { + + public ShowDemandeListAction(MainUIHandler handler) { + super(handler, true, FaxToMailScreen.LIST); + } +} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowRechercheAction.java (from rev 2, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowRechercheAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowRechercheAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowRechercheAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,17 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; + +/** + * To show demande screen. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class ShowRechercheAction extends AbstractChangeScreenAction { + + public ShowRechercheAction(MainUIHandler handler) { + super(handler, true, FaxToMailScreen.SEARCH); + } +} Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/StartAction.java (from rev 6, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/StartAction.java) =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/StartAction.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/StartAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,88 @@ +package com.franciaflex.faxtomail.ui.swing.actions; + +import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Start action (when the start action file is present when + * starting application). + * + * @author tchemit <chemit@codelutin.com> + * @since 2.4 + */ +public class StartAction extends AbstractMainUIFaxToMailAction { + + /** Logger. */ + private static final Log log = LogFactory.getLog(StartAction.class); + + protected AbstractMainUIFaxToMailAction delegateAction; + + public StartAction(MainUIHandler handler) { + super(handler, true); + } + + @Override + public boolean prepareAction() throws Exception { + +// File actionfile = getConfig().getStartActionFile(); + boolean doAction = false;//actionfile.exists(); + + if (doAction) { + + try { + // get action to execute +// String content = FaxToMailIOUtil.readContent(actionfile, _("faxtomail.error.read.startActionFile", actionfile)); +// content = content.trim(); + +// if (InstallDbAction.class.getName().equals(content)) { +// +// // install db +// delegateAction = TuttiActionHelper.createLogicAction(getHandler(), InstallDbAction.class); +// +// if (log.isInfoEnabled()) { +// log.info("Found install db action"); +// } +// } else if (content.startsWith(ImportDbAction.class.getName())) { +// +// // import db +// ImportDbAction action = TuttiActionHelper.createLogicAction(getHandler(), ImportDbAction.class); +// File importFile = new File(content.substring(ImportDbAction.class.getName().length() + 1)); +// action.setImportFile(importFile); +// delegateAction = action; +// if (log.isInfoEnabled()) { +// log.info("Found import db action (with file " + importFile + ")"); +// } +// } else { + doAction = false; +// } + + } finally { + + // delete start action file +// FaxToMailIOUtil.deleteFile( +// actionfile, +// _("faxtomail.error.delete.startActionFile", actionfile)); + } + } + + + if (doAction) { + setActionDescription(delegateAction.getActionDescription()); + doAction = delegateAction.prepareAction(); + } + return doAction; + } + + @Override + public void doAction() throws Exception { + + getActionEngine().runInternalAction(delegateAction); + } + + @Override + protected void releaseAction() { + delegateAction = null; + super.releaseAction(); + } +} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractChangeScreenAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractChangeScreenAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractChangeScreenAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,93 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; -import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import jaxx.runtime.SwingUtil; -import jaxx.runtime.context.JAXXContextEntryDef; - -/** - * Action to change the screen. - * <p/> - * Will just check that the current screen can be quit via - * the {@link MainUIHandler#quitCurrentScreen()}. - * <p/> - * - * @author kmorin <kmorin@codelutin.com> - * @since 1.0 - */ -public abstract class AbstractChangeScreenAction extends AbstractMainUIFaxToMailAction { - - /** - * Context entry to keep previous screen. - * - * @since 1.1 - */ - protected static final JAXXContextEntryDef<FaxToMailScreen> PREVIOUS_SCREEN = - SwingUtil.newContextEntryDef("previousScreen", FaxToMailScreen.class); - - /** - * Screen where to go. - * - * @since 1.0 - */ - protected FaxToMailScreen screen; - - /** - * Flag to skip the check of current screen. - * - * @since 1.1 - */ - protected boolean skipCheckCurrentScreen; - - protected AbstractChangeScreenAction(MainUIHandler handler, - boolean hideBody, - FaxToMailScreen screen) { - super(handler, hideBody); - this.screen = screen; - } - - public void setSkipCheckCurrentScreen(boolean skipCheckCurrentScreen) { - this.skipCheckCurrentScreen = skipCheckCurrentScreen; - } - - protected void setScreen(FaxToMailScreen screen) { - this.screen = screen; - } - - @Override - public boolean prepareAction() throws Exception { - boolean result = super.prepareAction(); - result &= skipCheckCurrentScreen || getHandler().quitCurrentScreen(); - return result; - } - - @Override - public void doAction() throws Exception { - - FaxToMailUIContext context = getContext(); - - FaxToMailScreen previousScreen = context.getScreen(); - if (getUI() != null) { - if (previousScreen == null) { - PREVIOUS_SCREEN.removeContextValue(getUI()); - } else { - PREVIOUS_SCREEN.setContextValue(getUI(), previousScreen); - } - } - - // clean current screen - context.setScreen(null); - - // change screen - context.setScreen(screen); - } - - @Override - public void postFailedAction(Throwable error) { - if (error != null) { - -// getContext().setFallBackScreen(); - } - } - -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractMainUIFaxToMailAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractMainUIFaxToMailAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/AbstractMainUIFaxToMailAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,16 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.action.AbstractFaxToMailAction; - -/** - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public abstract class AbstractMainUIFaxToMailAction extends AbstractFaxToMailAction<FaxToMailUIContext, MainUI, MainUIHandler> { - - protected AbstractMainUIFaxToMailAction(MainUIHandler handler, - boolean hideBody) { - super(handler, hideBody); - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/CloseApplicationAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/CloseApplicationAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/CloseApplicationAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,41 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.ui.swing.RunFaxToMail; - -import static org.nuiton.i18n.I18n.t; - -/** - * To close FaxToMail Application. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.1 - */ -public class CloseApplicationAction extends AbstractChangeScreenAction { - - protected int exitCode = RunFaxToMail.NORMAL_EXIT_CODE; - - public CloseApplicationAction(MainUIHandler handler) { - super(handler, false, null); - setSkipCheckCurrentScreen(true); - setActionDescription(t("faxtomail.main.action.exit.tip")); - } - - public void setExitCode(int exitCode) { - this.exitCode = exitCode; - } - - @Override - public void doAction() throws Exception { - - super.doAction(); - - RunFaxToMail.closeFaxToMail(getHandler(), exitCode); - } - - - @Override - public void releaseAction() { - exitCode = RunFaxToMail.NORMAL_EXIT_CODE; - super.releaseAction(); - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/GoToPreviousScreenAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/GoToPreviousScreenAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/GoToPreviousScreenAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,20 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import static org.nuiton.i18n.I18n.t; - -/** - * To return on previous screen. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.1 - */ -public class GoToPreviousScreenAction extends AbstractChangeScreenAction { - - public GoToPreviousScreenAction(MainUIHandler handler) { - super(handler, - true, - PREVIOUS_SCREEN.getContextValue(handler.getUI()) - ); - setActionDescription(t("faxtomail.main.action.goto.previousScreen.tip")); - } -} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css 2014-02-06 16:42:22 UTC (rev 7) @@ -24,7 +24,7 @@ toolTipText: "faxtomail.main.action.demandeList.tip"; i18nMnemonic: "faxtomail.main.action.demandeList.mnemonic"; enabled: true;//{model.getScreen() != TuttiScreen.LIST}; - _tuttiAction: {ShowDemandeListAction.class}; + _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction.class}; } #menuFileRecherche { @@ -32,7 +32,7 @@ toolTipText: "faxtomail.main.action.recherche.tip"; i18nMnemonic: "faxtomail.main.action.recherche.mnemonic"; enabled: true; - _tuttiAction: {ShowRechercheAction.class}; + _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowRechercheAction.class}; } #menuFileConfiguration { @@ -41,7 +41,7 @@ toolTipText: "faxtomail.main.action.configuration.tip"; i18nMnemonic: "faxtomail.main.action.configuration.mnemonic"; enabled: true;//{model.getScreen() != TuttiScreen.CONFIG}; - _tuttiAction: {ShowConfigAction.class}; + _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowConfigAction.class}; _help: {"faxtomail.main.menu.action.configuration.help"}; } @@ -50,7 +50,7 @@ text: "faxtomail.main.action.exit"; toolTipText: "faxtomail.main.action.exit.tip"; i18nMnemonic: "faxtomail.main.action.exit.mnemonic"; - _tuttiAction: {CloseApplicationAction.class}; + _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.CloseApplicationAction.class}; _help: {"faxtomail.main.menu.action.exit.help"}; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.jaxx 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.jaxx 2014-02-06 16:42:22 UTC (rev 7) @@ -4,6 +4,8 @@ <import> com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil + com.franciaflex.faxtomail.ui.swing.actions.* org.jdesktop.swingx.JXTitledPanel @@ -13,21 +15,11 @@ <FaxToMailUIContext id='model' initializer='getContextValue(FaxToMailUIContext.class)'/> - <MainUIHandler id='handler' - initializer='getContextValue(MainUIHandler.class)'/> - <script><![CDATA[ public MainUI(FaxToMailUIContext context) { - setContextValue(context); - MainUIHandler handler = new MainUIHandler(context, this); - setContextValue(handler); - handler.beforeInitUI(); + FaxToMailUIUtil.setApplicationContext(this, context); } - - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } ]]></script> <!-- menu --> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-02-06 16:42:22 UTC (rev 7) @@ -11,7 +11,6 @@ import com.franciaflex.faxtomail.ui.swing.util.CloseableUI; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI; import com.franciaflex.faxtomail.ui.swing.util.RemoveablePropertyChangeListener; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionUI; import com.google.common.base.Preconditions; import jaxx.runtime.JAXXBinding; import jaxx.runtime.SwingUtil; @@ -19,6 +18,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.i18n.I18n; +import org.nuiton.jaxx.application.swing.action.ApplicationActionUI; import javax.swing.Icon; import javax.swing.JComponent; @@ -43,26 +43,17 @@ protected JComponent currentBody; -// protected PersistenceService persistenceService; - - protected MainUIHandler(FaxToMailUIContext context, MainUI ui) { - super(context, ui); -// this.persistenceService = context.getPersistenceService(); - context.setMainUI(ui); - context.setActionUI(new FaxToMailActionUI(ui, context)); - } - - public MainUIHandler(FaxToMailUIContext context) { - super(context, null); -// this.persistenceService = null; - } - //------------------------------------------------------------------------// //-- AbstractTuttiUIHandler methods --// //------------------------------------------------------------------------// @Override - public void beforeInitUI() { + public void beforeInit(MainUI ui) { + super.beforeInit(ui); + FaxToMailUIContext context = getContext(); + ui.setContextValue(context); + context.setMainUI(ui); + context.setActionUI(new ApplicationActionUI(ui, context)); context.addPropertyChangeListener(new RemoveablePropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { @@ -114,7 +105,7 @@ } @Override - public void afterInitUI() { + public void afterInit(MainUI ui) { initUI(ui); @@ -137,37 +128,7 @@ // JToolBar bar = ui.getBottomBar(); // ui.getStatus().addWidget(bar, 0); -// if (context.isDbLoaded()) { -// -// // db already opened (happens when reloading ui) -// // just go to select cruise screen -// TuttiUIAction<SelectCruiseAction> uiAction = TuttiActionHelper.createUIAction(this, SelectCruiseAction.class); -// SelectCruiseAction logicAction = uiAction.getLogicAction(); -// logicAction.setSkipCheckCurrentScreen(true); -// logicAction.setActionDescription(ui.getMenuActionSelectCruise().getToolTipText()); -// uiAction.actionPerformed(null); -// -// } else { -// -// if (context.isDbExist()) { -// -// // open tutti db (using a fake button to have simple api) -// TuttiUIAction<OpenDbAction> uiAction = TuttiActionHelper.createUIAction(this, OpenDbAction.class); -// OpenDbAction logicAction = uiAction.getLogicAction(); -// logicAction.setSkipCheckCurrentScreen(true); -// logicAction.setUpdateReferentiel(true); -// uiAction.actionPerformed(null); -// -// } else { -// -// // clean db context -// context.clearDbContext(); -// -// // go to manage db screen (to install db) -// context.setScreen(TuttiScreen.MANAGE_DB); -// } -// } - context.setScreen(FaxToMailScreen.LIST); + getContext().setScreen(FaxToMailScreen.LIST); } @Override @@ -178,6 +139,8 @@ @Override public void onCloseUI() { + FaxToMailUIContext context = getContext(); + // remove any screen context.setScreen(null); context.removeMessageNotifier(this); @@ -240,8 +203,7 @@ getModel().setLocale(locale); // // // change i18n locale -// I18n.setDefaultLocale(getConfig().getI18nLocale()); - I18n.setDefaultLocale(Locale.FRENCH); + I18n.setDefaultLocale(getConfig().getI18nLocale()); // // // reload decorator service (TODO Check if this is necessary) // getContext().reloadDecoratorService(); @@ -265,6 +227,11 @@ // getModel().showHelp(ui, ui.getBroker(), null); // } + @Override + public final void showInformationMessage(String message) { + ui.getStatus().setStatus("<html><body>" + message + "</body></html>"); + } + public void registerValidator(SwingValidator validator) { // ui.getValidatorMessageWidget().registerValidator(validator); } @@ -277,7 +244,7 @@ public boolean quitCurrentScreen() { boolean canClose; - if (context.getScreen() == null || currentBody == null) { + if (getContext().getScreen() == null || currentBody == null) { // no screen, surely can quit canClose = true; @@ -303,30 +270,6 @@ return canClose; } - public AbstractFaxToMailUIHandler getCurrentHandler() { - FaxToMailUI<?, ?> body = (FaxToMailUI<?, ?>) currentBody; - return body.getHandler(); - } - - /** - * Reload the persistence service and set the new ne into the handler. - * - * @since 1.0 - */ - public void reloadPersistenceService() { -// this.persistenceService = context.reloadPersistenceService(); - } - - /** - * Get the persistence service instance used by the handler. - * - * @return the persistence service instance used by the handler - * @since 1.0 - */ -// public PersistenceService getPersistenceService() { -// return persistenceService; -// } - //------------------------------------------------------------------------// //-- Internal methods --// //------------------------------------------------------------------------// @@ -410,8 +353,8 @@ String title = getSelectedCruiseTitle(); ui.setTitle(t("faxtomail.main.title.application", -// getConfig().getVersion(), - "0.1", + getConfig().getVersion(), +// "0.1", title)); } Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ReloadFaxToMailAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ReloadFaxToMailAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ReloadFaxToMailAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,27 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.ui.swing.RunFaxToMail; - -import static org.nuiton.i18n.I18n.t; - -/** - * To reload FaxToMail application. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0.3 - */ -public class ReloadFaxToMailAction extends AbstractChangeScreenAction { - - public ReloadFaxToMailAction(MainUIHandler handler) { - super(handler, true, null); - setActionDescription(t("faxtomail.main.action.reloadFaxToMail")); - } - - @Override - public void doAction() throws Exception { - - // Close the application, will exit and restart application - RunFaxToMail.closeFaxToMail(getHandler(), RunFaxToMail.UPATE_EXIT_CODE); - } - -} \ No newline at end of file Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowConfigAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowConfigAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowConfigAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,16 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; - -/** - * To show config screen. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.1 - */ -public class ShowConfigAction extends AbstractChangeScreenAction { - - public ShowConfigAction(MainUIHandler handler) { - super(handler, true, FaxToMailScreen.CONFIG); - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,16 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; - -/** - * To show demande screen. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.1 - */ -public class ShowDemandeAction extends AbstractChangeScreenAction { - - public ShowDemandeAction(MainUIHandler handler) { - super(handler, true, FaxToMailScreen.DEMANDE); - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeListAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeListAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowDemandeListAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,16 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; - -/** - * To show demande screen. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.1 - */ -public class ShowDemandeListAction extends AbstractChangeScreenAction { - - public ShowDemandeListAction(MainUIHandler handler) { - super(handler, true, FaxToMailScreen.LIST); - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowRechercheAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowRechercheAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/ShowRechercheAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,18 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; -import com.franciaflex.faxtomail.ui.swing.content.AbstractChangeScreenAction; -import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; - -/** - * To show demande screen. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.1 - */ -public class ShowRechercheAction extends AbstractChangeScreenAction { - - public ShowRechercheAction(MainUIHandler handler) { - super(handler, true, FaxToMailScreen.SEARCH); - } -} Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/StartAction.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/StartAction.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/StartAction.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,91 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.content; - -import com.franciaflex.faxtomail.FaxToMailIOUtil; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionHelper; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.io.File; - -/** - * Start action (when the start action file is present when - * starting application). - * - * @author tchemit <chemit@codelutin.com> - * @since 2.4 - */ -public class StartAction extends AbstractMainUIFaxToMailAction { - - /** Logger. */ - private static final Log log = LogFactory.getLog(StartAction.class); - - protected AbstractMainUIFaxToMailAction delegateAction; - - public StartAction(MainUIHandler handler) { - super(handler, true); - } - - @Override - public boolean prepareAction() throws Exception { - -// File actionfile = getConfig().getStartActionFile(); - boolean doAction = false;//actionfile.exists(); - - if (doAction) { - - try { - // get action to execute -// String content = FaxToMailIOUtil.readContent(actionfile, _("faxtomail.error.read.startActionFile", actionfile)); -// content = content.trim(); - -// if (InstallDbAction.class.getName().equals(content)) { -// -// // install db -// delegateAction = TuttiActionHelper.createLogicAction(getHandler(), InstallDbAction.class); -// -// if (log.isInfoEnabled()) { -// log.info("Found install db action"); -// } -// } else if (content.startsWith(ImportDbAction.class.getName())) { -// -// // import db -// ImportDbAction action = TuttiActionHelper.createLogicAction(getHandler(), ImportDbAction.class); -// File importFile = new File(content.substring(ImportDbAction.class.getName().length() + 1)); -// action.setImportFile(importFile); -// delegateAction = action; -// if (log.isInfoEnabled()) { -// log.info("Found import db action (with file " + importFile + ")"); -// } -// } else { - doAction = false; -// } - - } finally { - - // delete start action file -// FaxToMailIOUtil.deleteFile( -// actionfile, -// _("faxtomail.error.delete.startActionFile", actionfile)); - } - } - - - if (doAction) { - setActionDescription(delegateAction.getActionDescription()); - doAction = delegateAction.prepareAction(); - } - return doAction; - } - - @Override - public void doAction() throws Exception { - - FaxToMailActionHelper.runInternalAction(delegateAction); - } - - @Override - protected void releaseAction() { - delegateAction = null; - super.releaseAction(); - } -} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/config/FaxToMailConfigUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/config/FaxToMailConfigUI.jaxx 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/config/FaxToMailConfigUI.jaxx 2014-02-06 16:42:22 UTC (rev 7) @@ -4,29 +4,17 @@ <import> com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil </import> <script><![CDATA[ - protected FaxToMailUIContext uiContext; - public FaxToMailConfigUI(FaxToMailUI parentUI) { - JAXXUtil.initContext(this, parentUI); - uiContext = parentUI.getHandler().getContext(); - FaxToMailConfigUIHandler handler = - new FaxToMailConfigUIHandler(parentUI, this); - setContextValue(handler); - handler.beforeInitUI(); + FaxToMailUIUtil.setParentUI(this, parentUI); } - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } ]]></script> - <FaxToMailConfigUIHandler id='handler' - initializer='getContextValue(FaxToMailConfigUIHandler.class)'/> - <FaxToMailUIContext id='model' initializer='getContextValue(FaxToMailUIContext.class)'/> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/config/FaxToMailConfigUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/config/FaxToMailConfigUIHandler.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/config/FaxToMailConfigUIHandler.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,10 +1,9 @@ package com.franciaflex.faxtomail.ui.swing.content.config; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.content.ReloadFaxToMailAction; +import com.franciaflex.faxtomail.ui.swing.actions.ReloadFaxToMailAction; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionHelper; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -28,23 +27,14 @@ public static final String CALLBACK_SHORTCUT = "shortcut"; - public FaxToMailConfigUIHandler(FaxToMailUI<?, ?> parentUI, FaxToMailConfigUI ui) { - super(parentUI.getHandler().getContext(), ui); - } - @Override public SwingValidator<FaxToMailUIContext> getValidator() { return null; } @Override - public void beforeInitUI() { + public void afterInit(FaxToMailConfigUI faxToMailConfigUI) { - } - - @Override - public void afterInitUI() { - initUI(ui); // FaxToMailApplicationConfig config = getConfig(); @@ -165,8 +155,8 @@ } protected void reloadApplication() { - ReloadFaxToMailAction action = FaxToMailActionHelper.createLogicAction(this, ReloadFaxToMailAction.class); - FaxToMailActionHelper.runAction(action); + ReloadFaxToMailAction action = getContext().getActionFactory().createLogicAction(this, ReloadFaxToMailAction.class); + getContext().getActionEngine().runAction(action); // TuttiActionHelper.runActionAndWait(this, ReloadTuttiAction.class); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-02-06 16:42:22 UTC (rev 7) @@ -4,6 +4,7 @@ <import> com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil com.franciaflex.faxtomail.ui.swing.util.Label jaxx.runtime.swing.editor.bean.BeanFilterableComboBox @@ -13,25 +14,12 @@ <script><![CDATA[ - protected FaxToMailUIContext uiContext; - public DemandeListUI(FaxToMailUI parentUI) { - JAXXUtil.initContext(this, parentUI); - uiContext = parentUI.getHandler().getContext(); - DemandeListUIHandler handler = - new DemandeListUIHandler(parentUI, this); - setContextValue(handler); - handler.beforeInitUI(); + FaxToMailUIUtil.setParentUI(this, parentUI); } - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } ]]></script> - <DemandeListUIHandler id='handler' - initializer='getContextValue(DemandeListUIHandler.class)'/> - <DemandeListUIModel id='model' initializer='getContextValue(DemandeListUIModel.class)'/> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-02-06 16:42:22 UTC (rev 7) @@ -24,11 +24,10 @@ * #L% */ -import com.franciaflex.faxtomail.ui.swing.content.ShowDemandeAction; +import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import com.franciaflex.faxtomail.ui.swing.util.CloseableUI; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionHelper; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -77,22 +76,9 @@ // private final PersistenceService persistenceService; - public DemandeListUIHandler(FaxToMailUI parentUi, DemandeListUI ui) { - super(parentUi.getHandler().getContext(), ui); -// persistenceService = context.getPersistenceService(); - } - - @Override - public void beforeInitUI() { + public void afterInit(DemandeListUI ui) { -// getDataContext().resetValidationDataContext(); - - } - - @Override - public void afterInitUI() { - initUI(ui); DefaultMutableTreeNode root = new DefaultMutableTreeNode("root"); @@ -131,7 +117,7 @@ public void mouseClicked(MouseEvent evt) { JXTable table = (JXTable) evt.getSource(); if (evt.getClickCount() == 2) { - FaxToMailActionHelper.runAction(new ShowDemandeAction(getContext().getMainUI().getHandler())); + getContext().getActionEngine().runAction(new ShowDemandeAction(getContext().getMainUI().getHandler())); } } }); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-02-06 16:42:22 UTC (rev 7) @@ -57,7 +57,7 @@ #backButton { text: "faxtomail.demande.back.button.label"; - _tuttiAction: {com.franciaflex.faxtomail.ui.swing.content.ShowDemandeListAction.class}; + _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction.class}; } #saveButton { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-02-06 16:42:22 UTC (rev 7) @@ -4,6 +4,7 @@ <import> com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil com.franciaflex.faxtomail.ui.swing.util.Label jaxx.runtime.swing.editor.bean.BeanFilterableComboBox @@ -17,25 +18,12 @@ <script><![CDATA[ - protected FaxToMailUIContext uiContext; - public DemandeUI(FaxToMailUI parentUI) { - JAXXUtil.initContext(this, parentUI); - uiContext = parentUI.getHandler().getContext(); - DemandeUIHandler handler = - new DemandeUIHandler(parentUI, this); - setContextValue(handler); - handler.beforeInitUI(); + FaxToMailUIUtil.setParentUI(this, parentUI); } - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } ]]></script> - <DemandeUIHandler id='handler' - initializer='getContextValue(DemandeUIHandler.class)'/> - <DemandeUIModel id='model' initializer='getContextValue(DemandeUIModel.class)'/> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-02-06 16:42:22 UTC (rev 7) @@ -67,22 +67,9 @@ // private final PersistenceService persistenceService; - public DemandeUIHandler(FaxToMailUI parentUi, DemandeUI ui) { - super(parentUi.getHandler().getContext(), ui); -// persistenceService = context.getPersistenceService(); - } - - @Override - public void beforeInitUI() { + public void afterInit(DemandeUI ui) { -// getDataContext().resetValidationDataContext(); - - } - - @Override - public void afterInitUI() { - initUI(ui); initBeanFilterableComboBox(ui.getDocTypeComboBox(), createLabelList("Commande", "SAV"), null); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.jaxx 2014-02-06 16:42:22 UTC (rev 7) @@ -4,6 +4,7 @@ <import> com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI + com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil com.franciaflex.faxtomail.ui.swing.util.Label jaxx.runtime.swing.editor.bean.BeanFilterableComboBox @@ -14,25 +15,12 @@ <script><![CDATA[ - protected FaxToMailUIContext uiContext; - public SearchUI(FaxToMailUI parentUI) { - JAXXUtil.initContext(this, parentUI); - uiContext = parentUI.getHandler().getContext(); - SearchUIHandler handler = - new SearchUIHandler(parentUI, this); - setContextValue(handler); - handler.beforeInitUI(); + FaxToMailUIUtil.setParentUI(this, parentUI); } - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } ]]></script> - <SearchUIHandler id='handler' - initializer='getContextValue(SearchUIHandler.class)'/> - <SearchUIModel id='model' initializer='getContextValue(SearchUIModel.class)'/> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-02-06 16:42:22 UTC (rev 7) @@ -80,22 +80,9 @@ // private final PersistenceService persistenceService; - public SearchUIHandler(FaxToMailUI parentUi, SearchUI ui) { - super(parentUi.getHandler().getContext(), ui); -// persistenceService = context.getPersistenceService(); - } - - @Override - public void beforeInitUI() { + public void afterInit(SearchUI ui) { -// getDataContext().resetValidationDataContext(); - - } - - @Override - public void afterInitUI() { - initUI(ui); initBeanFilterableComboBox(ui.getModifiedByComboBox(), createLabelList("Utilisateur A", "Utilisateur B", "Utilisateur C"), null); Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java (rev 0) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java 2014-02-06 16:42:22 UTC (rev 7) @@ -0,0 +1,160 @@ +package com.franciaflex.faxtomail.ui.swing.util; + +/* + * #%L + * Tutti :: UI + * $Id: AbstractTuttiBeanUIModel.java 1564 2014-01-31 10:56:26Z tchemit $ + * $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/tutti-ui-swing/src/main/java/... $ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import org.jdesktop.beans.AbstractSerializableBean; +import org.nuiton.jaxx.application.listener.PropagatePropertyChangeListener; +import org.nuiton.util.CollectionUtil; +import org.nuiton.util.beans.Binder; + +import java.util.Collection; +import java.util.List; + +/** + * Abstract UI model to edit a bean. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public abstract class AbstractFaxToMailBeanUIModel<E, B extends AbstractFaxToMailBeanUIModel<E, B>> extends AbstractSerializableBean implements PropagatePropertyChangeListener.PropagatePropertyChange { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_ID = "id"; + + public static final String PROPERTY_MODIFY = "modify"; + + public static final String PROPERTY_VALID = "valid"; + + protected String id; + + protected boolean modify; + + protected boolean valid; + + private final Binder<E, B> fromBeanBinder; + + private final Binder<B, E> toBeanBinder; + + protected AbstractFaxToMailBeanUIModel(Binder<E, B> fromBeanBinder, + Binder<B, E> toBeanBinder) { + this.fromBeanBinder = fromBeanBinder; + this.toBeanBinder = toBeanBinder; + } + + public void fromEntity(E entity) { + fromBean(entity); + } + + public E toEntity() { + return toBean(); + } + + public final void fromBean(E bean) { + fromBeanBinder.copy(bean, (B) this); + } + + public final E toBean() { + E result = newEntity(); + toBeanBinder.copy((B) this, result); + return result; + } + + protected abstract E newEntity(); + + public boolean isModify() { + return modify; + } + + public void setModify(boolean modify) { + Object oldValue = isModify(); + this.modify = modify; + firePropertyChange(PROPERTY_MODIFY, oldValue, modify); + } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + Object oldValue = isValid(); + this.valid = valid; + firePropertyChange(PROPERTY_VALID, oldValue, valid); + } + + public boolean isCreate() { + return id == null; + } + + //------------------------------------------------------------------------// + //-- TuttiEntity methods --// + //------------------------------------------------------------------------// + +// @Override + public Integer getIdAsInt() { + return id == null ? null : Integer.valueOf(id); + } + +// @Override + public void setId(Integer id) { + if (id == null) { + this.id = null; + } else { + this.id = id.toString(); + } + } + +// @Override + public String getId() { + return id; + } + +// @Override + public void setId(String id) { + Object oldValue = getId(); + this.id = id; + firePropertyChange(PROPERTY_ID, oldValue, id); + } + + //------------------------------------------------------------------------// + //-- PropagatePropertyChangeListener methods --// + //------------------------------------------------------------------------// + + @Override + public void firePropertyChanged(String propertyName, + Object oldValue, + Object newValue) { + firePropertyChange(propertyName, oldValue, newValue); + } + + protected <B> B getChild(Collection<B> child, int index) { + return CollectionUtil.getOrNull(child, index); + } + + protected <B> B getChild(List<B> child, int index) { + return CollectionUtil.getOrNull(child, index); + } + +} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,306 +1,98 @@ package com.franciaflex.faxtomail.ui.swing.util; +import com.franciaflex.faxtomail.FaxToMailConfiguration; import com.franciaflex.faxtomail.LabelAware; +import com.franciaflex.faxtomail.services.DecoratorService; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.config.FaxToMailApplicationConfig; import com.franciaflex.faxtomail.ui.swing.content.MainUI; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionHelper; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionUI; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import jaxx.runtime.JAXXUtil; -import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.editor.FileEditor; -import jaxx.runtime.swing.editor.NumberEditor; -import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; -import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; -import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.lang3.ArrayUtils; +import com.google.common.collect.Sets; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXDatePicker; -import org.jdesktop.swingx.JXTable; import org.nuiton.decorator.Decorator; -import org.nuiton.decorator.JXPathDecorator; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; +import org.nuiton.jaxx.application.swing.action.ApplicationActionUI; -import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.text.JTextComponent; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.awt.event.HierarchyEvent; -import java.awt.event.HierarchyListener; -import java.awt.event.ItemEvent; -import java.awt.event.KeyEvent; -import java.awt.event.MouseEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.io.File; -import java.io.Serializable; -import java.text.ParseException; -import java.util.Date; +import java.awt.Component; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.List; -import java.util.Map; +import java.util.Set; -import static org.nuiton.i18n.I18n.t; - /** * Contract of any UI handler. * * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public abstract class AbstractFaxToMailUIHandler<M, UI extends FaxToMailUI<M, ?>> implements UIMessageNotifier { +public abstract class AbstractFaxToMailUIHandler<M, UI extends FaxToMailUI<M, ?>> + extends AbstractApplicationUIHandler<M, UI> implements UIMessageNotifier { /** Logger. */ private static final Log log = LogFactory.getLog(AbstractFaxToMailUIHandler.class); - public abstract void beforeInitUI(); - - public abstract void afterInitUI(); - - public abstract void onCloseUI(); - - public abstract SwingValidator<M> getValidator(); - - /** - * Global application context. - * - * @since 0.1 - */ - protected final FaxToMailUIContext context; - - /** - * UI handled. - * - * @since 0.1 - */ - protected final UI ui; - - protected AbstractFaxToMailUIHandler(FaxToMailUIContext context, UI ui) { - this.context = context; - this.ui = ui; - } - - //------------------------------------------------------------------------// - //-- Public methods --// - //------------------------------------------------------------------------// - - public DefaultComboBoxModel newComboModel(Object... items) { - return new DefaultComboBoxModel(items); - } - - public final M getModel() { - return ui.getModel(); - } - - public final UI getUI() { - return ui; - } - @Override public void showInformationMessage(String message) { - context.showInformationMessage(message); + getContext().showInformationMessage(message); } public FaxToMailUIContext getContext() { - return context; + return (FaxToMailUIContext) super.getContext(); } // public FaxToMailDataContext getDataContext() { // return getContext().getDataContext(); // } - public FaxToMailApplicationConfig getConfig() { - return context.getConfig(); + public FaxToMailConfiguration getConfig() { + return getContext().getConfig(); } - public void setText(KeyEvent event, String property) { - JTextComponent field = (JTextComponent) event.getSource(); - String value = field.getText(); - FaxToMailUIUtil.setProperty(getModel(), property, value); - } - - public void setFile(ActionEvent event, String property) { - FileEditor field = (FileEditor) event.getSource(); - File value = field.getSelectedFile(); - FaxToMailUIUtil.setProperty(getModel(), property, value); - } - - public void setBoolean(ItemEvent event, String property) { - boolean value = event.getStateChange() == ItemEvent.SELECTED; - FaxToMailUIUtil.setProperty(getModel(), property, value); - } - - public void setDate(ActionEvent event, String property) { - JXDatePicker field = (JXDatePicker) event.getSource(); - Date value = field.getDate(); - FaxToMailUIUtil.setProperty(getModel(), property, value); - } - -// public void selectListData(ListSelectionEvent event, String property) { -// if (!event.getValueIsAdjusting()) { -// JList list = (JList) event.getSource(); -// ListSelectionModel selectionModel = list.getSelectionModel(); -// -// selectionModel.setValueIsAdjusting(true); -// try { -// List selectedList = Lists.newLinkedList(); -// -// for (int index : list.getSelectedIndices()) { -// Object o = list.getModel().getElementAt(index); -// selectedList.add(o); -// } -// TuttiUIUtil.setProperty(getModel(), property, selectedList); -// } finally { -// selectionModel.setValueIsAdjusting(false); -// } -// } -// } - - public void openDialog(FaxToMailUI dialogContent, - String title, Dimension dim) { - Component topestUI = getTopestUI(); - - JDialog result; - if (topestUI instanceof Frame) { - result = new JDialog((Frame) topestUI, title, true); - } else { - result = new JDialog((Dialog) topestUI, title, true); - } - - result.add((Component) dialogContent); - result.setResizable(true); - - result.setSize(dim); - - final AbstractFaxToMailUIHandler handler = dialogContent.getHandler(); - - if (handler instanceof Cancelable) { - - // add a auto-close action - JRootPane rootPane = result.getRootPane(); - -// KeyStroke shortcutClosePopup = getConfig().getShortcutClosePopup(); - -// rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( -// shortcutClosePopup, "close"); - rootPane.getActionMap().put("close", new AbstractAction() { - private static final long serialVersionUID = 1L; - - @Override - public void actionPerformed(ActionEvent e) { - ((Cancelable) handler).cancel(); - } - }); - } - - result.addWindowListener(new WindowAdapter() { - - @Override - public void windowClosed(WindowEvent e) { - Component ui = (Component) e.getSource(); - if (log.isDebugEnabled()) { - log.debug("Destroy ui " + ui); - } - JAXXUtil.destroy(ui); - } - }); - SwingUtil.center(getContext().getMainUI(), result); - result.setVisible(true); - } - - public void closeDialog(FaxToMailUI ui) { - SwingUtil.getParentContainer(ui, JDialog.class).setVisible(false); - } - - public static final String CONFIRMATION_FORMAT = "<html>%s<hr/><br/>%s</html>"; - - public int askSaveBeforeLeaving(String message) { - String htmlMessage = String.format( - CONFIRMATION_FORMAT, - message, - t("faxtomail.common.askSaveBeforeLeaving.help")); - int result = JOptionPane.showConfirmDialog( - getTopestUI(), - htmlMessage, - t("faxtomail.common.askSaveBeforeLeaving.title"), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE); - return result; - } - - public boolean askCancelEditBeforeLeaving(String message) { - String htmlMessage = String.format( - CONFIRMATION_FORMAT, - message, - t("faxtomail.common.askCancelEditBeforeLeaving.help")); - int i = JOptionPane.showConfirmDialog( - getTopestUI(), - htmlMessage, - t("faxtomail.common.askCancelEditBeforeLeaving.title"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE); - - boolean result = i == JOptionPane.OK_OPTION; - return result; - } - - public void showSuccessMessage(String title, String message) { - - Component topestUI = getTopestUI(); - boolean alwaysOnTop = false; - - if (topestUI instanceof JDialog) { - alwaysOnTop = ((JDialog) topestUI).isAlwaysOnTop(); - } - - if (alwaysOnTop) { - ((JDialog) topestUI).setAlwaysOnTop(false); - } - try { - - JOptionPane.showMessageDialog( - topestUI, - message, - title, - JOptionPane.INFORMATION_MESSAGE, - UIManager.getIcon("info") - ); - } finally { - if (alwaysOnTop) { - ((JDialog) topestUI).setAlwaysOnTop(true); - } - } - } - + @Override public Component getTopestUI() { Component result; - FaxToMailActionUI actionUI = getContext().getActionUI(); - if (actionUI.isVisible()) { + ApplicationActionUI actionUI = getContext().getActionUI(); +// if (actionUI.isVisible()) { result = actionUI; - } else { - result = getContext().getMainUI(); - } +// } else { +// result = getContext().getMainUI(); +// } return result; } public void clearValidators() { - MainUI main = context.getMainUI(); + MainUI main = getContext().getMainUI(); Preconditions.checkNotNull( main, "No mainUI registred in application context"); MainUIHandler handler = main.getHandler(); handler.clearValidators(); } + @Override + public <O> Decorator<O> getDecorator(Class<O> type, String name) { + DecoratorService decoratorService = + getContext().getDecoratorService(); + + Preconditions.checkNotNull(type); + + Decorator decorator = decoratorService.getDecoratorByType(type, name); + if (decorator == null) { + + if (LabelAware.class.isAssignableFrom(type)) { + decorator = getDecorator(LabelAware.class, null); + } + } + Preconditions.checkNotNull(decorator); + return decorator; + } + +// @Override // public <O> Decorator<O> getDecorator(Class<O> type, String name) { // DecoratorService decoratorService = -// context.getDecoratorService(); +// getContext().getDecoratorService(); // // Preconditions.checkNotNull(type); // @@ -315,520 +107,33 @@ // return decorator; // } - public void autoSelectRowInTable(MouseEvent e, JPopupMenu popup) { - - boolean rightClick = SwingUtilities.isRightMouseButton(e); - - if (rightClick || SwingUtilities.isLeftMouseButton(e)) { - - // get the coordinates of the mouse click - Point p = e.getPoint(); - - JXTable source = (JXTable) e.getSource(); - - int[] selectedRows = source.getSelectedRows(); - int[] selectedColumns = source.getSelectedColumns(); - - // get the row index at this point - int rowIndex = source.rowAtPoint(p); - - // get the column index at this point - int columnIndex = source.columnAtPoint(p); - - if (log.isDebugEnabled()) { - log.debug("At point [" + p + "] found Row " + rowIndex + ", Column " + columnIndex); - } - - boolean canContinue = true; - - if (source.isEditing()) { - - // stop editing - boolean stopEdit = source.getCellEditor().stopCellEditing(); - if (!stopEdit) { - if (log.isWarnEnabled()) { - log.warn("Could not stop edit cell..."); - } - canContinue = false; - } - } - - if (canContinue) { - - // select row (could empty selection) - if (rowIndex == -1) { - source.clearSelection(); - } else if (!ArrayUtils.contains(selectedRows, rowIndex)) { - if (ListSelectionModel.MULTIPLE_INTERVAL_SELECTION == source.getSelectionMode()) { - // add to selection - source.addRowSelectionInterval(rowIndex, rowIndex); - } else { - // set selection - source.setRowSelectionInterval(rowIndex, rowIndex); - } - } - - // select column (could empty selection) - if (columnIndex == -1) { - source.clearSelection(); - } else if (!ArrayUtils.contains(selectedColumns, columnIndex)) { - source.setColumnSelectionInterval(columnIndex, columnIndex); - } - - if (rightClick) { - - // use now model coordinate - int modelRowIndex = source.convertRowIndexToModel(rowIndex); - int modelColumnIndex = source.convertColumnIndexToModel(columnIndex); - -// beforeOpenPopup(modelRowIndex, modelColumnIndex); - - // on right click show popup - popup.show(source, e.getX(), e.getY()); - } - } - } - } - - public void openRowMenu(KeyEvent e, JPopupMenu popup) { - - if (e.getKeyCode() == KeyEvent.VK_CONTEXT_MENU) { - - JXTable source = (JXTable) e.getSource(); - - // get the lowest selected row - int[] selectedRows = source.getSelectedRows(); - int lowestRow = -1; - for (int row : selectedRows) { - lowestRow = Math.max(lowestRow, row); - } - // get the selected column - int selectedColumn = source.getSelectedColumn(); - Rectangle r = source.getCellRect(lowestRow, selectedColumn, true); - - // get the point in the middle lower of the cell - Point p = new Point(r.x + r.width / 2, r.y + r.height); - - if (log.isDebugEnabled()) { - log.debug("Row " + lowestRow + " found t point [" + p + "]"); - } - - boolean canContinue = true; - - if (source.isEditing()) { - - // stop editing - boolean stopEdit = source.getCellEditor().stopCellEditing(); - if (!stopEdit) { - if (log.isWarnEnabled()) { - log.warn("Could not stop edit cell..."); - } - canContinue = false; - } - } - - if (canContinue) { - - // use now model coordinate - int rowIndex = source.convertRowIndexToModel(lowestRow); - int columnIndex = source.convertColumnIndexToModel(selectedColumn); -// beforeOpenPopup(rowIndex, columnIndex); - - popup.show(source, p.x, p.y); - } - } - } - - //------------------------------------------------------------------------// - //-- Init methods --// - //------------------------------------------------------------------------// - - protected void initUI(FaxToMailUI ui) { - - for (Map.Entry<String, Object> entry : ui.get$objectMap().entrySet()) { - Object component = entry.getValue(); - if (component instanceof NumberEditor) { - - initNumberEditor((NumberEditor) component); - } else if (component instanceof JXDatePicker) { - - initDatePicker((JXDatePicker) component); - } else if (component instanceof JLabel) { - - initLabel((JLabel) component); - } else if (component instanceof JTextField) { - - initTextField((JTextField) component); - } else if (component instanceof AbstractButton) { - - initButton((AbstractButton) component); - } else if (component instanceof JScrollPane) { - - initScrollPane((JScrollPane) component); - } - } - - ((Component) ui).addHierarchyListener(new HierarchyListener() { + protected void listenModelModifiy(AbstractFaxToMailBeanUIModel model) { + model.addPropertyChangeListener(AbstractFaxToMailBeanUIModel.PROPERTY_MODIFY, new PropertyChangeListener() { @Override - public void hierarchyChanged(HierarchyEvent e) { - JComponent component = getComponentToFocus(); - if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) > 0 - && e.getChanged().isShowing() - && component != null) { - component.requestFocus(); + public void propertyChange(PropertyChangeEvent evt) { + Boolean modify = (Boolean) evt.getNewValue(); + if (modify != null && modify) { + ((AbstractFaxToMailBeanUIModel) getModel()).setModify(true); } } }); } - protected abstract JComponent getComponentToFocus(); - - protected void initTextField(JTextField jTextField) { - Boolean computed = (Boolean) jTextField.getClientProperty("computed"); - if (computed != null && computed) { - Font font = jTextField.getFont().deriveFont(Font.ITALIC); - jTextField.setFont(font); - jTextField.setEditable(false); - jTextField.setEnabled(false); -// jTextField.setDisabledTextColor(getConfig().getColorComputedWeights()); - } - if (isAutoSelectOnFocus(jTextField)) { - addAutoSelectOnFocus(jTextField); - } - } - - protected void initLabel(JLabel jLabel) { - Boolean strongStyle = (Boolean) jLabel.getClientProperty("strongStyle"); - Boolean italicStyle = (Boolean) jLabel.getClientProperty("italicStyle"); - Font font = jLabel.getFont(); - int style = font.getStyle(); - if (strongStyle != null && strongStyle) { - style |= Font.BOLD; - } - if (italicStyle != null && italicStyle) { - style |= Font.ITALIC; - } - jLabel.setFont(font.deriveFont(style)); - - } - -// protected void initButtonAttachment(ButtonAttachment component) { +// //------------------------------------------------------------------------// +// //-- Internal methods --// +// //------------------------------------------------------------------------// // -// component.init(); -// } - - protected void initButton(AbstractButton abstractButton) { - - Class actionName = (Class) abstractButton.getClientProperty("tuttiAction"); - if (actionName != null) { - Action action = FaxToMailActionHelper.createUIAction(this, abstractButton, actionName); - abstractButton.setAction(action); - } - } - - /** - * Prépare un component de choix d'entités pour un type d'entité donné et - * pour un service de persistance donné. - * - * @param comboBox le component graphique à initialiser - */ - protected <E extends Serializable> void initBeanFilterableComboBox( - BeanFilterableComboBox<E> comboBox, - List<E> data, - E selectedData) { - - initBeanFilterableComboBox(comboBox, data, selectedData, null); - } - - protected <E extends Serializable> void initBeanFilterableComboBox( - BeanFilterableComboBox<E> comboBox, - List<E> data, - E selectedData, - String decoratorContext) { - - Preconditions.checkNotNull(comboBox, "No comboBox!"); - - Class<E> beanType = comboBox.getBeanType(); - - Preconditions.checkNotNull(beanType, "No beanType on the combobox!"); -// Decorator<E> decorator = getDecorator(beanType, decoratorContext);; - - if (data == null) { - data = Lists.newArrayList(); - } - - if (log.isDebugEnabled()) { - log.debug("entity comboBox list [" + beanType.getName() + "] : " + - (data == null ? 0 : data.size())); - } - - comboBox.setI18nPrefix("tutti.property."); - - // add data list to combo box -// comboBox.init((JXPathDecorator<E>) decorator, data); - -// comboBox.setSelectedItem(selectedData); - -// if (log.isDebugEnabled()) { -// log.debug("combo [" + beanType.getName() + "] : " + -// comboBox.getData().size()); +// protected void registerValidators(SwingValidator... validators) { +// MainUI main = getContext().getMainUI(); +// Preconditions.checkNotNull( +// main, "No mainUI registred in application context"); +// MainUIHandler handler = main.getHandler(); +// handler.clearValidators(); +// for (SwingValidator validator : validators) { +// handler.registerValidator(validator); // } - } - - /** - * Prépare un component de choix d'entités pour un type d'entité donné et - * pour un service de persistance donné. - * - * @param list le component graphique à initialiser - * @param data la liste des données à mettre dans la liste de gauche - * @param selectedData la liste des données à mettre dans la liste de droite - */ -// protected <E extends TuttiEntity> void initBeanList( -// BeanDoubleList<E> list, -// List<E> data, -// List<E> selectedData, -// Decorator<E> selectedDecorator) { -// -// Preconditions.checkNotNull(list, "No list!"); -// -// Class<E> beanType = list.getBeanType(); -// Preconditions.checkNotNull(beanType, "No beanType on the double list!"); -// -// DecoratorService decoratorService = -// context.getDecoratorService(); -// Decorator<E> decorator = decoratorService.getDecoratorByType(beanType); -// -// if (log.isDebugEnabled()) { -// log.debug("entity list [" + beanType.getName() + "] : " + -// (data == null ? 0 : data.size())); -// } -// -// list.setI18nPrefix("tutti.property."); -// -// // add data list to combo box -// list.init((JXPathDecorator<E>) decorator, -// (JXPathDecorator<E>) selectedDecorator, -// data, -// selectedData); -// -// if (log.isDebugEnabled()) { -// log.debug("Jlist [" + beanType.getName() + "] : " + -// list.getUniverseList().getModel().getSize()); -// } // } - /** - * Prépare un component de choix d'entités pour un type d'entité donné et - * pour un service de persistance donné. - * - * @param list le component graphique à initialiser - * @param data la liste des données à mettre dans la liste de gauche - * @param selectedData la liste des données à mettre dans la liste de droite - */ -// protected <E extends TuttiEntity> void initBeanList( -// BeanDoubleList<E> list, -// List<E> data, -// List<E> selectedData) { -// -// initBeanList(list, data, selectedData, null); -// } - - protected void initNumberEditor(NumberEditor editor) { - if (log.isDebugEnabled()) { - log.debug("init number editor " + editor.getName()); - } - editor.init(); - - // Force binding if value is already in model - Number model = editor.getModel(); - if (model != null) { - editor.setModel(null); - editor.setModel(model); - } - - if (isAutoSelectOnFocus(editor)) { - - addAutoSelectOnFocus(editor.getTextField()); - } - } - -// protected void initTimeEditor(SimpleTimeEditor editor) { -// if (log.isDebugEnabled()) { -// log.debug("init time editor " + editor.getName() + -// " for property " + editor.getModel().getProperty()); -// } -// editor.init(); -// -// if (isAutoSelectOnFocus(editor)) { -// addAutoSelectOnFocus(((JSpinner.DefaultEditor) editor.getHour().getEditor()).getTextField()); -// addAutoSelectOnFocus(((JSpinner.DefaultEditor) editor.getMinute().getEditor()).getTextField()); -// } -// } - -// protected void initCoordinateDMSEditor(DmsCoordinateEditor editor) { -// editor.init(); -// } - -// protected void initCoordinateDMDEditor(DmdCoordinateEditor editor) { -// editor.init(); -// } - - protected void initDatePicker(final JXDatePicker picker) { - - if (log.isDebugEnabled()) { - log.debug("disable JXDatePicker editor" + picker.getName()); - } -// String dateFormat = getConfig().getDateFormat(); - picker.setFormats("dd/MM/yyyy"); - picker.setToolTipText(t("faxtomail.common.datefield.tip", "dd/MM/yyyy")); - picker.getEditor().addFocusListener(new FocusAdapter() { - - @Override - public void focusLost(FocusEvent e) { - try { - picker.commitEdit(); - - } catch (ParseException ex) { - if (log.isDebugEnabled()) { - log.debug("format error", ex); - } - picker.requestFocus(); - } - } - }); - - if (isAutoSelectOnFocus(picker)) { - addAutoSelectOnFocus(picker.getEditor()); - } - } - - protected void initScrollPane(JScrollPane scrollPane) { - Boolean onlyVerticalScrollable = (Boolean) scrollPane.getClientProperty("onlyVerticalScrollable"); - if (onlyVerticalScrollable != null && onlyVerticalScrollable) { - scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); - scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); - - final JViewport viewport = scrollPane.getViewport(); - viewport.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - Dimension newDimension = new Dimension(viewport.getExtentSize().width, - viewport.getViewSize().height); - viewport.setViewSize(newDimension); - } - }); - } - } - - protected boolean isAutoSelectOnFocus(JComponent comp) { - Object selectOnFocus = comp.getClientProperty("selectOnFocus"); - return selectOnFocus != null && Boolean.valueOf(selectOnFocus.toString()); - } - - protected void addAutoSelectOnFocus(JTextField jTextField) { - jTextField.addFocusListener(new FocusAdapter() { - @Override - public void focusGained(final FocusEvent e) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - JTextField source = (JTextField) e.getSource(); - source.selectAll(); - } - }); - - } - }); - } - - //------------------------------------------------------------------------// - //-- Internal methods --// - //------------------------------------------------------------------------// - - protected boolean quitScreen(boolean modelIsValid, - boolean modelIsModify, - String askGiveUpMessage, - String askSaveMessage, - Action saveAction) { - boolean result; - - if (!modelIsValid) { - - // model is not valid - // ask user to qui or not - result = askCancelEditBeforeLeaving(askGiveUpMessage); - - } else if (modelIsModify) { - - // something is modify ask user what to do - int answer = askSaveBeforeLeaving(askSaveMessage); - switch (answer) { - case JOptionPane.YES_OPTION: - - // ok save - saveAction.actionPerformed(null); - result = true; - break; - case JOptionPane.NO_OPTION: - - // do not save but can still quit the screen (so nothing to do) - result = true; - break; - default: - // do not save and stay here (so nothing to do) - result = false; - - } - } else { - - // model is valid and not modify, can safely quit screen - result = true; - } - return result; - } - - protected void registerValidators(SwingValidator... validators) { - MainUI main = context.getMainUI(); - Preconditions.checkNotNull( - main, "No mainUI registred in application context"); - MainUIHandler handler = main.getHandler(); - handler.clearValidators(); - for (SwingValidator validator : validators) { - handler.registerValidator(validator); - } - } - - protected String decorate(Object object) { - return decorate(object, null); - } - - protected String decorate(Object object, String context) { - String result = ""; -// if (object != null) { -// result = getDecorator(object.getClass(), context).toString(object); -// } - return result; - } - -// protected <O> ListCellRenderer newListCellRender(Class<O> type) { -// -// return newListCellRender(type, null); -// } - -// protected <O> ListCellRenderer newListCellRender(Class<O> type, String name) { - -// Decorator<O> decorator = getDecorator(type, name); -// return newListCellRender(decorator); -// } - - protected <O> ListCellRenderer newListCellRender(Decorator<O> decorator) { - - Preconditions.checkNotNull(decorator); - - ListCellRenderer result = new DecoratorListCellRenderer(decorator); - return result; - } - // protected void listenValidatorValid(SimpleBeanValidator validator, // final AbstractTuttiBeanUIModel model) { // validator.addPropertyChangeListener(SimpleBeanValidator.VALID_PROPERTY, new PropertyChangeListener() { @@ -836,14 +141,14 @@ // public void propertyChange(PropertyChangeEvent evt) { // if (log.isDebugEnabled()) { // log.debug("Model [" + model + -// "] pass to valid state [" + -// evt.getNewValue() + "]"); +// "] pass to valid state [" + +// evt.getNewValue() + "]"); // } // model.setValid((Boolean) evt.getNewValue()); // } // }); // } - +// // protected void listenValidationTableHasNoFatalError(final SimpleBeanValidator validator, // final AbstractTuttiBeanUIModel model) { // getContext().getMainUI().getValidatorMessageWidget().addTableModelListener(new TableModelListener() { @@ -852,270 +157,37 @@ // boolean valid = !validator.hasFatalErrors(); // if (log.isDebugEnabled()) { // log.debug("Model [" + model + -// "] pass to valid state [" + valid + "]"); +// "] pass to valid state [" + valid + "]"); // } // model.setValid(valid); // } // }); // } -// -// protected void listModelIsModify(AbstractTuttiBeanUIModel model) { -// model.addPropertyChangeListener(new PropertyChangeListener() { -// -// final Set<String> excludeProperties = getPropertiesToIgnore(); -// -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// if (!excludeProperties.contains(evt.getPropertyName())) { -// ((AbstractTuttiBeanUIModel) evt.getSource()).setModify(true); -// } -// } -// }); -// } -// protected Set<String> getPropertiesToIgnore() { -// return Sets.newHashSet( -// AbstractTuttiBeanUIModel.PROPERTY_MODIFY, -// AbstractTuttiBeanUIModel.PROPERTY_VALID); -// } + protected void listModelIsModify(AbstractFaxToMailBeanUIModel model) { + model.addPropertyChangeListener(new PropertyChangeListener() { - protected void closeUI(FaxToMailUI ui) { - ui.getHandler().onCloseUI(); + final Set<String> excludeProperties = getPropertiesToIgnore(); + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (!excludeProperties.contains(evt.getPropertyName())) { + ((AbstractFaxToMailBeanUIModel) evt.getSource()).setModify(true); + } + } + }); } - protected <B> void changeValidatorContext(String newContext, - SwingValidator<B> validator) { - B bean = validator.getBean(); - validator.setContext(newContext); - validator.setBean(bean); + protected Set<String> getPropertiesToIgnore() { + return Sets.newHashSet( + AbstractFaxToMailBeanUIModel.PROPERTY_MODIFY, + AbstractFaxToMailBeanUIModel.PROPERTY_VALID); } -// protected <R extends AbstractTuttiBeanUIModel> TableColumnExt addColumnToModel(TableColumnModel model, -// TableCellEditor editor, -// TableCellRenderer renderer, -// ColumnIdentifier<R> identifier) { -// -// return addColumnToModel(model, editor, renderer, identifier, null); -// } -// -// -// protected <R extends AbstractTuttiBeanUIModel> TableColumnExt addColumnToModel(TableColumnModel model, -// TableCellEditor editor, -// TableCellRenderer renderer, -// ColumnIdentifier<R> identifier, -// WeightUnit weightUnit) { -// -// TableColumnExt col = new TableColumnExt(model.getColumnCount()); -// col.setCellEditor(editor); -// col.setCellRenderer(renderer); -// String label = _(identifier.getHeaderI18nKey()); -// if (weightUnit != null) { -// label = weightUnit.decorateLabel(label); -// } -// col.setHeaderValue(label); -// String tip = _(identifier.getHeaderTipI18nKey()); -// if (weightUnit != null) { -// tip = weightUnit.decorateTip(tip); -// } -// col.setToolTipText(tip); -// -// col.setIdentifier(identifier); -// model.addColumn(col); -// // by default no column is sortable, must specify it -// col.setSortable(false); -// return col; -// } + protected void closeUI(FaxToMailUI ui) { + ui.getHandler().onCloseUI(); + } -// protected <R extends AbstractTuttiBeanUIModel> TableColumnExt addColumnToModel(TableColumnModel model, -// ColumnIdentifier<R> identifier) { -// -// return addColumnToModel(model, null, null, identifier, null); -// } -// -// protected <R extends AbstractTuttiBeanUIModel> TableColumnExt addFloatColumnToModel(TableColumnModel model, -// ColumnIdentifier<R> identifier, -// String numberPattern, -// JTable table) { -// -// NumberCellEditor<Float> editor = -// JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); -// editor.getNumberEditor().setSelectAllTextOnError(true); -// editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); -// editor.getNumberEditor().setNumberPattern(numberPattern); -// -// TableCellRenderer renderer = -// newNumberCellRenderer(table.getDefaultRenderer(Number.class)); -// -// return addColumnToModel(model, editor, renderer, identifier, null); -// } -// -// protected <R extends AbstractTuttiBeanUIModel> TableColumnExt addFloatColumnToModel(TableColumnModel model, -// ColumnIdentifier<R> identifier, -// WeightUnit weightUnit, -// JTable table) { -// -// Preconditions.checkNotNull(weightUnit); -// NumberCellEditor<Float> editor = -// JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); -// editor.getNumberEditor().setSelectAllTextOnError(true); -// editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); -// editor.getNumberEditor().setNumberPattern(weightUnit.getNumberEditorPattern()); -// -// TableCellRenderer renderer = -// newNumberCellRenderer(table.getDefaultRenderer(Number.class)); -// -// return addColumnToModel(model, editor, renderer, identifier, weightUnit); -// } -// -// protected <R extends AbstractTuttiBeanUIModel> TableColumnExt addIntegerColumnToModel(TableColumnModel model, -// ColumnIdentifier<R> identifier, -// String numberPattern, -// JTable table) { -// -// NumberCellEditor<Integer> editor = -// JAXXWidgetUtil.newNumberTableCellEditor(Integer.class, false); -// editor.getNumberEditor().setSelectAllTextOnError(true); -// editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); -// editor.getNumberEditor().setNumberPattern(numberPattern); -// -// TableCellRenderer renderer = newNumberCellRenderer(table.getDefaultRenderer(Number.class)); -// return addColumnToModel(model, editor, renderer, identifier, null); -// } -// -// -// TableCellRenderer newNumberCellRenderer(final TableCellRenderer defaultRenderer) { -// TableCellRenderer result = new TableCellRenderer() { -// @Override -// public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { -// Component result = defaultRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); -// if (result instanceof JLabel) { -// JLabel jLabel = (JLabel) result; -// jLabel.setHorizontalTextPosition(SwingConstants.RIGHT); -// -// } -// return result; -// } -// }; -// return result; -// } -// -// -// protected <R extends AbstractTuttiBeanUIModel> TableColumnExt addBooleanColumnToModel(TableColumnModel model, -// ColumnIdentifier<R> identifier, -// JTable table) { -// -// return addColumnToModel(model, -// table.getDefaultEditor(Boolean.class), -// table.getDefaultRenderer(Boolean.class), -// identifier, -// null); -// } -// -// protected <R extends AbstractTuttiBeanUIModel, B> TableColumnExt addComboDataColumnToModel(TableColumnModel model, -// ColumnIdentifier<R> identifier, -// Decorator<B> decorator, -// List<B> data) { -// JComboBox comboBox = new JComboBox(); -// comboBox.setRenderer(newListCellRender(decorator)); -// -// List<B> dataToList = Lists.newArrayList(data); -// -// // add a null value at first position -// if (!dataToList.isEmpty() && dataToList.get(0) != null) { -// dataToList.add(0, null); -// } -// SwingUtil.fillComboBox(comboBox, dataToList, null); -// -// ObjectToStringConverter converter = BeanUIUtil.newDecoratedObjectToStringConverter(decorator); -// BeanUIUtil.decorate(comboBox, converter); -// ComboBoxCellEditor editor = new ComboBoxCellEditor(comboBox); -// -// return addColumnToModel(model, -// editor, -// newTableCellRender(decorator), -// identifier, -// null); -// } -// -// protected <O> TableCellRenderer newTableCellRender(Class<O> type) { -// -// return newTableCellRender(type, null); -// } -// -// protected <O> TableCellRenderer newTableCellRender(Class<O> type, String name) { -// -// Decorator<O> decorator = getDecorator(type, name); -// -// TableCellRenderer result = newTableCellRender(decorator); -// return result; -// } -// -// protected <O> TableCellRenderer newTableCellRender(Decorator<O> decorator) { -// -// Preconditions.checkNotNull(decorator); -// -// DecoratorTableCellRenderer result = new DecoratorTableCellRenderer(decorator, true); -// return result; -// } -// -// /** -// * Hook to prepare popup just before showing it. -// * <p/> -// * The right place to update actions accessibility; a quite better design -// * than trying to update each time something change in the table... -// * -// * @param rowIndex selected row index (or lowest selected one) -// * @param columnIndex selected column index -// * @since 2.6 -// */ -// protected void beforeOpenPopup(int rowIndex, int columnIndex) { -// -// } -// -// protected String buildReminderLabelTitle(Species species, -// Iterable<SampleCategory<?>> categories, -// String prefix, -// String suffix) { -// return buildReminderLabelTitle( -// decorate(species), -// categories, -// prefix, -// suffix); -// -// } -// -// protected String buildReminderLabelTitle(String species, -// Iterable<SampleCategory<?>> categories, -// String prefix, -// String suffix) { -// StringBuilder title = new StringBuilder(prefix); -// -// title.append(" - [").append(species).append("]"); -// -// if (categories != null) { -// for (SampleCategory<?> sampleCategory : categories) { -// if (sampleCategory.getCategoryValue() != null) { -// title.append(" - "); -// title.append(decorate(sampleCategory.getCategoryValue())); -// } -// } -// } -// -// title.append(" - ").append(suffix); -// return title.toString(); -// } -// -// protected void incrementsMessage(String message) { -// -// TuttiActionUI actionUI = context.getActionUI(); -// if (actionUI != null) { -// ProgressionModel progressionModel = actionUI.getModel().getProgressionModel(); -// if (progressionModel != null) -// -// progressionModel.increments(message); -// } -// } - protected List<Label> createLabelList(String... labels) { List<Label> labelList = Lists.newArrayList(); for (String label : labels) { Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailErrorHelper.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailErrorHelper.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailErrorHelper.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,88 +0,0 @@ -package com.franciaflex.faxtomail.ui.swing.util; - -import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import org.jdesktop.swingx.JXErrorPane; -import org.jdesktop.swingx.error.ErrorInfo; -import org.jdesktop.swingx.error.ErrorReporter; -import org.nuiton.csv.ImportRuntimeException; - -import javax.swing.*; - -import static org.nuiton.i18n.I18n.t; - -/** - * helper around errors in FaxToMail. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class FaxToMailErrorHelper implements ErrorReporter { - - protected FaxToMailUIContext context; - - public FaxToMailErrorHelper(FaxToMailUIContext context) { - this.context = context; - } - - /** - * Display a user friendly error frame. - * - * @param message message for user - * @param cause exception cause - */ - public void showErrorDialog(String message, Throwable cause) { - - if (cause == null) { - JOptionPane.showMessageDialog(context.getMainUI(), "<html><body>" + message + "</body></html>", - t("faxtomail.error.ui.business.error"), - JOptionPane.ERROR_MESSAGE); -// } else if (cause instanceof FaxToMailBusinessException) { -// JOptionPane.showMessageDialog(context.getMainUI(), "<html><body>" + cause.getMessage() + "</body></html>", -// _("tutti.error.ui.business.error"), -// JOptionPane.ERROR_MESSAGE); - } else if (cause instanceof ImportRuntimeException) { - JOptionPane.showMessageDialog(context.getMainUI(), cause.getMessage(), - t("faxtomail.error.ui.business.error"), - JOptionPane.ERROR_MESSAGE); - } else { - - JXErrorPane pane = new JXErrorPane(); - ErrorInfo info = new ErrorInfo(t("faxtomail.error.ui.other.error"), - t("faxtomail.error.errorpane.htmlmessage", message), null, null, - cause, null, null); - pane.setErrorInfo(info); - pane.setErrorReporter(this); - JXErrorPane.showDialog(context.getActionUI(), pane); - } - - } - - /** - * Display a user friendly error frame. - * - * @param message message for user - */ - public void showErrorDialog(String message) { - showErrorDialog(message, null); - } - - @Override - public void reportError(ErrorInfo errorInfo) throws NullPointerException { - - showErrorDialog(errorInfo.getBasicErrorMessage(), errorInfo.getErrorException()); - } - - /** - * Display a user friendly warning frame. - * - * @param message message for user - */ - public void showWarningDialog(String message) { - - JOptionPane.showMessageDialog(context.getMainUI(), "<html><body>" + message + "</body></html>", - t("faxtomail.error.ui.business.warning"), - JOptionPane.WARNING_MESSAGE); - - } - -} Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,13 +1,12 @@ package com.franciaflex.faxtomail.ui.swing.util; -import com.franciaflex.faxtomail.FaxToMailTechnicalException; -import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.content.AbstractChangeScreenAction; -import com.franciaflex.faxtomail.ui.swing.action.AbstractFaxToMailAction; -import com.franciaflex.faxtomail.ui.swing.action.FaxToMailActionException; -import jaxx.runtime.swing.JAXXRuntimeException; +import com.franciaflex.faxtomail.ui.swing.actions.AbstractChangeScreenAction; +import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.swing.action.ApplicationActionException; +import org.nuiton.jaxx.application.swing.util.ApplicationErrorHelper; +import org.nuiton.jaxx.application.swing.util.ApplicationExceptionHandler; /** * FaxToMail global exception handler. @@ -20,57 +19,43 @@ * @author tchemit <chemit@codelutin.com> * @since 1.0 */ -public class FaxToMailExceptionHandler implements Thread.UncaughtExceptionHandler { +public class FaxToMailExceptionHandler extends ApplicationExceptionHandler { private static final Log log = LogFactory.getLog(FaxToMailExceptionHandler.class); - @Override - public void uncaughtException(Thread t, Throwable ex) { - handleException(t.getName(), ex); + public FaxToMailExceptionHandler(ApplicationErrorHelper errorHelper) { + super(errorHelper); } - public void handle(Throwable thrown) { - // for EDT exceptions - handleException(Thread.currentThread().getName(), thrown); - } - protected void handleException(String tname, Throwable ex) { if (log.isErrorEnabled()) { log.error("Global application exception [" + tname + "]", ex); } - Throwable cause = ex; + Throwable cause = getCause(ex); - if (cause instanceof FaxToMailTechnicalException) { - cause = cause.getCause(); - } - - if (cause instanceof JAXXRuntimeException) { - cause = cause.getCause(); - } - boolean backToScreen = false; AbstractFaxToMailAction action = null; - if (cause instanceof FaxToMailActionException) { + if (cause instanceof ApplicationActionException) { - FaxToMailActionException actionException = (FaxToMailActionException) cause; + ApplicationActionException actionException = (ApplicationActionException) cause; cause = cause.getCause(); if (log.isDebugEnabled()) { log.debug("Action error cause:", cause); } - action = actionException.getAction(); + action = (AbstractFaxToMailAction) actionException.getAction(); if (action instanceof AbstractChangeScreenAction) { backToScreen = true; } } - FaxToMailUIContext.getErrorHelper().showErrorDialog(cause.getMessage(), cause); + showErrorDialog(cause.getMessage(), cause); if (backToScreen) { Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUI.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUI.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUI.java 2014-02-06 16:42:22 UTC (rev 7) @@ -1,6 +1,7 @@ package com.franciaflex.faxtomail.ui.swing.util; import jaxx.runtime.JAXXObject; +import org.nuiton.jaxx.application.swing.ApplicationUI; import javax.swing.UIManager; import java.awt.Font; @@ -11,93 +12,6 @@ * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public interface FaxToMailUI<M, H extends AbstractFaxToMailUIHandler<M, ?>> extends JAXXObject { +public interface FaxToMailUI<M, H extends AbstractFaxToMailUIHandler<M, ?>> extends ApplicationUI<M, H> { - M getModel(); - - H getHandler(); - - /** - * Pattern to use for short numeric values in editors with max 1 digits. - * - * @since 0.2 - */ - public static final String INT_1_DIGITS_PATTERN = "\\d{0,1}"; - - /** - * Pattern to use for short numeric values in editors with max 2 digits. - * - * @since 0.1 - */ - public static final String INT_2_DIGITS_PATTERN = "\\d{0,2}"; - - /** - * Pattern to use for signed numeric values in editors with max 2 digits. - * - * @since 1.0 - */ - public static final String SIGNED_INT_2_DIGITS_PATTERN = "-?\\d{0,2}"; - - /** - * Pattern to use for short numeric values in editors with max 3 digits. - * - * @since 0.1 - */ - public static final String INT_3_DIGITS_PATTERN = "\\d{0,3}"; - - /** - * Pattern to use for singed numeric values in editors with max 3 digits. - * - * @since 1.0 - */ - public static final String SIGNED_INT_3_DIGITS_PATTERN = "-?\\d{0,3}"; - - /** - * Pattern to use for short numeric values in editors with max 4 digits. - * - * @since 0.2 - */ - public static final String INT_4_DIGITS_PATTERN = "\\d{0,4}"; - - /** - * Pattern to use for integer numeric values in editors with max 6 digits. - * - * @since 0.1 - */ - public static final String INT_6_DIGITS_PATTERN = "\\d{0,6}"; - - /** - * Pattern to use for integer numeric values in editors with max 7 digits. - * - * @since 0.1 - */ - public static final String INT_7_DIGITS_PATTERN = "\\d{0,7}"; - - /** - * Pattern to use for decimal numeric values with 2 decimal digits in - * editors. - * - * @since 0.1 - */ - public static final String DECIMAL2_PATTERN = "\\d{0,6}(\\.\\d{0,2})?"; - - /** - * Pattern to use for decimal numeric values with 3 decimal digits in - * editors. - * - * @since 0.1 - */ - public static final String DECIMAL3_PATTERN = "\\d{0,6}(\\.\\d{0,3})?"; - - /** - * Pattern to use for decimal numeric values with 2 digits + 3 decimal digits in - * editors. - * - * @since 1.0 - */ - public static final String DECIMAL2_DIGITS_PATTERN = "\\d{0,2}(\\.\\d*)?"; - - public static final Font TEXTFIELD_NORMAL_FONT = UIManager.getDefaults().getFont("TextField.font"); - - public static final Font TEXTFIELD_COMPUTED_FONT = UIManager.getDefaults().getFont("TextField.font").deriveFont(Font.ITALIC); } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-02-06 16:42:22 UTC (rev 7) @@ -24,31 +24,18 @@ * #L% */ -import com.franciaflex.faxtomail.FaxToMailTechnicalException; -import com.google.common.base.Preconditions; -import org.apache.commons.beanutils.PropertyUtils; +import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; +import jaxx.runtime.JAXXObject; +import jaxx.runtime.JAXXUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXTable; +import org.nuiton.jaxx.application.swing.util.ApplicationUIUtil; -import javax.swing.*; -import javax.swing.table.JTableHeader; -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; - -import static org.nuiton.i18n.I18n.t; - /** * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public final class FaxToMailUIUtil { +public final class FaxToMailUIUtil extends ApplicationUIUtil { /** Logger. */ private static final Log log = LogFactory.getLog(FaxToMailUIUtil.class); @@ -57,217 +44,12 @@ // never instanciate util class } - public static void setProperty(Object bean, String property, Object value) { - Preconditions.checkNotNull(bean); - Preconditions.checkNotNull(property); - try { - PropertyUtils.setSimpleProperty(bean, property, value); - } catch (Exception e) { - throw new FaxToMailTechnicalException(t("faxtomail.property.set.error", property, bean.getClass().getName()), e); - } + public static FaxToMailUIContext getApplicationContext(JAXXObject ui) { + return (FaxToMailUIContext) ApplicationUIUtil.getApplicationContext(ui); } - public static Object getProperty(Object bean, String property) { - Preconditions.checkNotNull(bean); - Preconditions.checkNotNull(property); - try { - return PropertyUtils.getSimpleProperty(bean, property); - } catch (Exception e) { - throw new FaxToMailTechnicalException(t("faxtomail.property.get.error", property, bean.getClass().getName()), e); - } + public static void setParentUI(JAXXObject ui, FaxToMailUI<?, ?> parentUI) { + JAXXUtil.initContext(ui, parentUI); + setApplicationContext(ui, parentUI.getHandler().getContext()); } - - private static DecimalFormatSymbols symbols; - - public static DecimalFormatSymbols getDecimalFormatSymbols() { - if (symbols == null) { - symbols = new DecimalFormatSymbols(); - symbols.setDecimalSeparator('.'); - symbols.setGroupingSeparator(' '); - } - return symbols; - } - - private static DecimalFormat decimalFormat; - - public static DecimalFormat getDecimalFormat(int minDecimal, int maxDecimal) { - if (decimalFormat == null) { - decimalFormat = new DecimalFormat(); - decimalFormat.setDecimalFormatSymbols(getDecimalFormatSymbols()); - decimalFormat.setGroupingUsed(false); - } - decimalFormat.setMinimumFractionDigits(minDecimal); - decimalFormat.setMaximumFractionDigits(maxDecimal); - return decimalFormat; - } - - public static void openLink(URL url) { - try { - openLink(url.toURI()); - } catch (URISyntaxException e) { - throw new FaxToMailTechnicalException(t("swing.error.cannot.open.link", url), e); - } - } - - public static Desktop getDesktopForBrowse() { - - if (!Desktop.isDesktopSupported()) { - throw new FaxToMailTechnicalException( - t("swing.error.desktop.not.supported")); - } - - Desktop desktop = Desktop.getDesktop(); - - if (!desktop.isSupported(Desktop.Action.BROWSE)) { - - throw new FaxToMailTechnicalException( - t("swing.error.desktop.browse.not.supported")); - } - - return desktop; - } - - public static void openLink(URI uri) { - - Desktop desktop = getDesktopForBrowse(); - - try { - - desktop.browse(uri); - } catch (Exception e) { - - throw new FaxToMailTechnicalException( - t("swing.error.cannot.open.link", uri), e); - } - } - - public static Desktop getDesktopForMail() { - - if (!Desktop.isDesktopSupported()) { - throw new FaxToMailTechnicalException( - t("swing.error.desktop.not.supported")); - } - - Desktop desktop = Desktop.getDesktop(); - - if (!desktop.isSupported(Desktop.Action.MAIL)) { - - throw new FaxToMailTechnicalException( - t("swing.error.desktop.mail.not.supported")); - } - - return desktop; - } - - public static void mail(String subject, String body) { - - Desktop desktop = getDesktopForMail(); - - try { - URI mailtoURI = new URI("mailto", null, null, "subject=" + subject + "&body=" + body, null); - desktop.mail(mailtoURI); - - } catch (Exception e) { - - throw new FaxToMailTechnicalException( - t("swing.error.cannot.mail"), e); - } - } - - public static void selectFirstCellOnFirstRowAndStopEditing(JXTable table) { - - // select first cell - doSelectCell(table, 0, 0); - - if (table.isEditing()) { - - // but no edit it - table.getCellEditor().stopCellEditing(); - } - } - - public static void selectFirstCellOnLastRow(JXTable table) { - - // select first cell - doSelectCell(table, table.getRowCount() - 1, 0); - } - - public static void selectFirstCellOnRow(JXTable table, int row, boolean stopEdit) { - - // select first cell - doSelectCell(table, row, 0); - - if (stopEdit && table.isEditing()) { - - table.getCellEditor().stopCellEditing(); - } - } - - public static void doSelectCell(JTable table, - int rowIndex, - int columnIndex) { - - int rowCount = table.getRowCount(); - if (rowCount == 0) { - - // no row, can not selected any cell - if (log.isWarnEnabled()) { - log.warn("No row in table, can not select any cell"); - } - return; - } - int columnCount = table.getColumnCount(); - if (columnCount == 0) { - - // no column, can not selected any cell - if (log.isWarnEnabled()) { - log.warn("No column in table, can not select any cell"); - } - return; - } - if (columnIndex > columnCount) { - if (log.isWarnEnabled()) { - log.warn(String.format("ColumnIndex: %s is more than columnCount %s", columnIndex, columnCount)); - } - columnIndex = columnCount - 1; - } - if (columnIndex < 0) { - columnIndex = 0; - } - if (rowIndex >= rowCount) { - if (log.isWarnEnabled()) { - log.warn(String.format("RowIndex: %s is more than rowCount %s", rowIndex, rowCount)); - } - rowIndex = rowCount - 1; - } - if (rowIndex < 0) { - rowIndex = 0; - } - - table.setColumnSelectionInterval(columnIndex, columnIndex); - table.setRowSelectionInterval(rowIndex, rowIndex); - table.editCellAt(rowIndex, columnIndex); - } - - protected static class ShowSpeciesDecoratorPopupListener extends MouseAdapter { - - private final JPopupMenu popup; - - public ShowSpeciesDecoratorPopupListener(JPopupMenu popup) { - this.popup = popup; - } - - @Override - public void mouseClicked(MouseEvent e) { - JTableHeader source = (JTableHeader) e.getSource(); - Point point = e.getPoint(); - int columnIndex = source.columnAtPoint(point); - - boolean rightClick = SwingUtilities.isRightMouseButton(e); - if (columnIndex == 0 && rightClick) { - e.consume(); - popup.show(source, e.getX(), e.getY()); - } - } - } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/Label.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/Label.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/Label.java 2014-02-06 16:42:22 UTC (rev 7) @@ -18,4 +18,4 @@ public String getLabel() { return label; } -} \ No newline at end of file +} Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-02-06 16:42:22 UTC (rev 7) @@ -10,6 +10,8 @@ Supprimer= T\\u00e9l\\u00e9copie\ re\\u00e7ue\ le\ 10/01/2014\ \\u00e0\ 13\:37= Voir= +application.action.create.error= +application.error.ui.business.warning= faxtomail.action.create.error= faxtomail.archive.button.label= faxtomail.back.button.label= Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties =================================================================== --- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-02-06 16:42:22 UTC (rev 7) @@ -10,6 +10,8 @@ Supprimer= T\\u00e9l\\u00e9copie\ re\\u00e7ue\ le\ 10/01/2014\ \\u00e0\ 13\:37= Voir= +application.action.create.error= +application.error.ui.business.warning= faxtomail.action.create.error= faxtomail.common.askBeforeDelete.help= faxtomail.common.askCancelEditBeforeLeaving.help= Modified: trunk/faxtomail-ui-web/pom.xml =================================================================== --- trunk/faxtomail-ui-web/pom.xml 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-web/pom.xml 2014-02-06 16:42:22 UTC (rev 7) @@ -63,6 +63,11 @@ </dependency> <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-application-api</artifactId> + </dependency> + + <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </dependency> Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-02-06 16:42:22 UTC (rev 7) @@ -2,22 +2,16 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaApplicationContext; import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; -import com.franciaflex.faxtomail.services.DefaultFaxToMailServiceContext; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.FaxToMailWebApplicationContext; import com.franciaflex.faxtomail.services.service.InitFaxToMailService; import com.franciaflex.faxtomail.web.DefaultFaxToMailWebApplicationContext; -import com.opensymphony.xwork2.util.LocalizedTextUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.LogManager; import org.apache.log4j.PropertyConfigurator; -import org.nuiton.i18n.I18n; -import org.nuiton.i18n.init.DefaultI18nInitializer; -import org.nuiton.i18n.init.I18nInitializer; import java.io.File; -import java.util.Locale; public class FaxToMailApplicationContext { @@ -27,13 +21,10 @@ protected static FaxToMailTopiaApplicationContext topiaApplicationContext; - protected static FaxToMailApplicationConfig applicationConfig; + protected static FaxToMailConfiguration applicationConfig; - public static FaxToMailApplicationConfig getApplicationConfig() { - if (applicationConfig == null) { - applicationConfig = new FaxToMailApplicationConfig(); - } - return applicationConfig; + public static FaxToMailConfiguration getApplicationConfig() { + return FaxToMailConfiguration.getInstance(); } public static FaxToMailTopiaApplicationContext getTopiaApplicationContext() { @@ -53,10 +44,10 @@ public FaxToMailServiceContext newServiceContext(FaxToMailTopiaPersistenceContext persistenceContext) { - DefaultFaxToMailServiceContext newServiceContext = - new DefaultFaxToMailServiceContext(); + FaxToMailServiceContext newServiceContext = + new FaxToMailServiceContext(); - FaxToMailApplicationConfig applicationConfig = getApplicationConfig(); + FaxToMailConfiguration applicationConfig = getApplicationConfig(); newServiceContext.setApplicationConfig(applicationConfig); Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/DefaultFaxToMailWebApplicationContext.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/DefaultFaxToMailWebApplicationContext.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/DefaultFaxToMailWebApplicationContext.java 2014-02-06 16:42:22 UTC (rev 7) @@ -24,7 +24,6 @@ * #L% */ -import com.franciaflex.faxtomail.FaxToMailTechnicalException; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.services.service.FaxToMailWebApplicationContext; import com.google.common.base.Charsets; @@ -33,6 +32,7 @@ import com.google.common.collect.Sets; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; @@ -69,7 +69,7 @@ if (log.isErrorEnabled()) { log.error("should never occur", e); } - throw new FaxToMailTechnicalException(e); + throw new ApplicationTechnicalException(e); } stringBuilder.append('?').append(Joiner.on('&').join(queryStringElements)); } Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailActionSupport.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailActionSupport.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailActionSupport.java 2014-02-06 16:42:22 UTC (rev 7) @@ -24,7 +24,7 @@ * #L% */ -import com.franciaflex.faxtomail.FaxToMailApplicationConfig; +import com.franciaflex.faxtomail.FaxToMailConfiguration; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.nuiton.topia.persistence.TopiaEntity; @@ -39,15 +39,15 @@ public static final String NEXT = "next"; - protected FaxToMailApplicationConfig applicationConfig; + protected FaxToMailConfiguration applicationConfig; private FaxToMailSession session; - public void setApplicationConfig(FaxToMailApplicationConfig applicationConfig) { + public void setApplicationConfig(FaxToMailConfiguration applicationConfig) { this.applicationConfig = applicationConfig; } - public FaxToMailApplicationConfig getApplicationConfig() { + public FaxToMailConfiguration getApplicationConfig() { return applicationConfig; } Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java 2014-02-06 08:35:48 UTC (rev 6) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java 2014-02-06 16:42:22 UTC (rev 7) @@ -24,8 +24,8 @@ * #L% */ -import com.franciaflex.faxtomail.FaxToMailApplicationConfig; import com.franciaflex.faxtomail.FaxToMailApplicationContext; +import com.franciaflex.faxtomail.FaxToMailConfiguration; import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; import com.franciaflex.faxtomail.services.FaxToMailService; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; @@ -116,7 +116,7 @@ toInject = faxToMailSession; - } else if (FaxToMailApplicationConfig.class.isAssignableFrom(propertyType)) { + } else if (FaxToMailConfiguration.class.isAssignableFrom(propertyType)) { toInject = getFaxToMailApplicationContext(invocation).getApplicationConfig();
participants (1)
-
kmorin@users.forge.codelutin.com