Author: tchemit Date: 2012-08-20 14:12:05 +0200 (Mon, 20 Aug 2012) New Revision: 441 Url: http://forge.codelutin.com/repositories/revision/sammoa/441 Log: - review decorator service api - use a cache of service - add fillProperties in storages Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectBooleanTableCell.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorage.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorages.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverTableCellEditor.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTable.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIModel.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java (rev 0) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java 2012-08-20 12:12:05 UTC (rev 441) @@ -0,0 +1,130 @@ +package fr.ulr.sammoa.application; +/* + * #%L + * SAMMOA :: Application + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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 fr.ulr.sammoa.persistence.Campaign; +import fr.ulr.sammoa.persistence.Flight; +import fr.ulr.sammoa.persistence.Observation; +import fr.ulr.sammoa.persistence.Observer; +import fr.ulr.sammoa.persistence.Region; +import fr.ulr.sammoa.persistence.Route; +import fr.ulr.sammoa.persistence.RouteType; +import fr.ulr.sammoa.persistence.Sector; +import fr.ulr.sammoa.persistence.Species; +import fr.ulr.sammoa.persistence.Strate; +import fr.ulr.sammoa.persistence.StringRef; +import fr.ulr.sammoa.persistence.Transect; +import org.nuiton.util.decorator.Decorator; +import org.nuiton.util.decorator.DecoratorProvider; + +import java.text.SimpleDateFormat; + +import static org.nuiton.i18n.I18n._; + +/** + * Sammoa decorator service. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.6 + */ +public class DecoratorService extends SammoaServiceSupport { + + protected SimpleDateFormat dateFormat = + new SimpleDateFormat(_("sammoa.dateTimePattern")); + + /** 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 setSammoaContext(SammoaContext context) { + super.setSammoaContext(context); + + decoratorProvider = new DecoratorProvider() { + @Override + protected void loadDecorators() { + registerJXPathDecorator(Route.class, "${beginTime}$tH:%1$tM:%1$tS ${routeType}$s"); + registerJXPathDecorator(Observation.class, "${observationNumber}$s ${observationTime}$tH:%2$tM:%2$tS"); + registerJXPathDecorator(Transect.class, "${name}$s"); + registerJXPathDecorator(Observer.class, "${initials}$s"); + registerMultiJXPathDecorator(Strate.class, "${code}$s##${name}$s", "##", " - "); + registerMultiJXPathDecorator(RouteType.class, "${name}$s", "##", " - "); + registerMultiJXPathDecorator(Species.class, "${code}$s##${commonName}$s", "##", " - "); + registerMultiJXPathDecorator(StringRef.class, "${value}$s", "##", " - "); + + + registerJXPathDecorator(Sector.class, "${name}$s"); + registerJXPathDecorator(Region.class, "${code}$s"); + registerMultiJXPathDecorator(Campaign.class, "${code}$s##${region/code}$s", "##", " - "); + + registerDecorator(new Decorator<Flight>(Flight.class) { + + private static final long serialVersionUID = 1L; + + @Override + public String toString(Object bean) { + Flight flight = (Flight) bean; + + String result; + if (flight == null) { + result = _("sammoa.flight.decorator.newFlight"); + + } else { + + result = _("sammoa.flight.decorator.flight", flight.getFlightNumber()); + if (flight.getBeginDate() != null) { + result += " - " + dateFormat.format(flight.getBeginDate()); + + if (flight.getEndDate() != null) { + result += " - " + dateFormat.format(flight.getEndDate()); + } else { + result += " - " + _("sammoa.flight.decorator.notEnded"); + } + + } else { + result += " - " + _("sammoa.flight.decorator.notStarted"); + } + } + return result; + } + }); + } + }; + } +} Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-20 12:12:05 UTC (rev 441) @@ -71,6 +71,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -314,7 +315,12 @@ FlightStorage flightStorage = campaignStorage.getFlightStorage(flightId); - SammoaStorages.deleteFlightStorage(flightStorage); + try { + flightStorage.delete(); + } catch (IOException e) { + throw new SammoaTechnicalException( + "Could not delete flight storage", e); + } } /** Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-20 12:12:05 UTC (rev 441) @@ -51,6 +51,7 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaRuntimeException; +import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -458,6 +459,10 @@ protected void deleteCampaignStorage(String campaignId) { CampaignStorage campaignStorage = getCampaignStorage(campaignId); - SammoaStorages.deleteCampaignStorage(campaignStorage); + try { + campaignStorage.delete(); + } catch (IOException e) { + throw new SammoaTechnicalException("Could not delete campaign storage", e); + } } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-20 12:12:05 UTC (rev 441) @@ -25,9 +25,15 @@ package fr.ulr.sammoa.application; import com.google.common.base.Preconditions; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; import fr.ulr.sammoa.persistence.SammoaPersistence; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.lang.reflect.Constructor; +import java.util.concurrent.ExecutionException; /** * Created: 08/06/12 @@ -35,13 +41,18 @@ * @author fdesbois <desbois@codelutin.com> */ public class SammoaContext { + /** Logger. */ + private static final Logger logger = + LoggerFactory.getLogger(SammoaContext.class); protected static SammoaContext instance; - protected SammoaConfig config; + protected final SammoaConfig config; - protected SammoaPersistence persistence; + protected final SammoaPersistence persistence; + protected final LoadingCache<Class<? extends SammoaService>, SammoaService> services; + public SammoaContext(SammoaConfig config) { this(config, new SammoaPersistence( config.getApplicationConfig().getFlatOptions(), @@ -52,6 +63,20 @@ public SammoaContext(SammoaConfig config, SammoaPersistence persistence) { this.config = config; this.persistence = persistence; + this.services = CacheBuilder.newBuilder().build(new CacheLoader<Class<? extends SammoaService>, SammoaService>() { + @Override + public SammoaService load(Class<? extends SammoaService> key) throws Exception { + Preconditions.checkNotNull(key); + Constructor<?> constructor = key.getConstructor(); + Preconditions.checkNotNull(constructor); + SammoaService s = (SammoaService) constructor.newInstance(); + if (logger.isInfoEnabled()) { + logger.info("New service {}", s); + } + s.setSammoaContext(SammoaContext.this); + return s; + } + }); } public SammoaConfig getConfig() { @@ -63,17 +88,24 @@ } public <S extends SammoaService> S newService(Class<S> serviceType) { - try { - Constructor<S> constructor = serviceType.getConstructor(); - Preconditions.checkNotNull(constructor); - S s = constructor.newInstance(); - s.setSammoaContext(this); + S s = (S) services.get(serviceType); return s; - } catch (Exception e) { + } catch (ExecutionException e) { throw new SammoaTechnicalException( "Could not instanciate service " + serviceType, e); } + +// try { +// Constructor<S> constructor = serviceType.getConstructor(); +// Preconditions.checkNotNull(constructor); +// S s = constructor.newInstance(); +// s.setSammoaContext(this); +// return s; +// } catch (Exception e) { +// throw new SammoaTechnicalException( +// "Could not instanciate service " + serviceType, e); +// } } public void open() { Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java 2012-08-20 12:12:05 UTC (rev 441) @@ -39,7 +39,5 @@ */ public interface SammoaService { - <S extends SammoaService> S newService(Class<S> serviceType); - void setSammoaContext(SammoaContext context); } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java 2012-08-20 12:12:05 UTC (rev 441) @@ -51,17 +51,16 @@ protected SammoaPersistence persistence; @Override - public <S extends SammoaService> S newService(Class<S> serviceType) { - return context.newService(serviceType); - } - - @Override public void setSammoaContext(SammoaContext context) { this.context = context; this.persistence = context.getPersistence(); this.config = context.getConfig(); } + public <S extends SammoaService> S newService(Class<S> serviceType) { + return context.newService(serviceType); + } + public CampaignStorage getCampaignStorage(String campaignId) { File directory = config.getCampaignDirectory(); CampaignStorage campaignStorage = SammoaStorages.getCampaignStorage( Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-20 12:12:05 UTC (rev 441) @@ -23,7 +23,15 @@ * #L% */ +import com.google.common.collect.Sets; +import fr.ulr.sammoa.application.DecoratorService; +import fr.ulr.sammoa.application.SammoaContext; +import fr.ulr.sammoa.persistence.Campaign; +import org.apache.commons.io.filefilter.DirectoryFileFilter; +import org.nuiton.util.decorator.Decorator; + import java.io.File; +import java.util.Set; /** * Storage for a campaign. @@ -31,8 +39,10 @@ * @author tchemit <chemit@codelutin.com> * @since 0.6 */ -public class CampaignStorage extends SammoaStorage { +public class CampaignStorage extends SammoaStorage<Campaign> { + private static final long serialVersionUID = 1L; + CampaignStorage(File dataDirectory, String id) { super(dataDirectory, id, "campaign.properties"); } @@ -53,10 +63,26 @@ return new File(getDirectory(), "csv"); } + public Set<String> getFlightIds() { + String[] files = getFlightDirectory().list(DirectoryFileFilter.INSTANCE); + Set<String> result = Sets.newHashSet(files); + return result; + } + public FlightStorage getFlightStorage(String flightId) { FlightStorage flightStorage = new FlightStorage(getFlightDirectory(), flightId); return flightStorage; } + @Override + public void fillProperties(Campaign campaign, + DecoratorService decoratorService) { + + Decorator<Campaign> decorator = + decoratorService.getDecoratorByType(Campaign.class); + + String campaignName = decorator.toString(campaign); + getProperties().put("name", campaignName); + } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-20 12:12:05 UTC (rev 441) @@ -23,7 +23,12 @@ * #L% */ +import fr.ulr.sammoa.application.DecoratorService; +import fr.ulr.sammoa.persistence.Flight; +import org.nuiton.util.decorator.Decorator; + import java.io.File; +import java.util.Properties; /** * Storage for a flight. @@ -31,8 +36,10 @@ * @author tchemit <chemit@codelutin.com> * @since 0.6 */ -public class FlightStorage extends SammoaStorage { +public class FlightStorage extends SammoaStorage<Flight> { + private static final long serialVersionUID = 1L; + FlightStorage(File dataDirectory, String id) { super(dataDirectory, id, "flight.properties"); } @@ -45,4 +52,14 @@ return new File(getAudioDirectory(), filename); } + @Override + public void fillProperties(Flight flight, + DecoratorService decoratorService) { + Properties properties = getProperties(); + Decorator<Flight> decorator = + decoratorService.getDecoratorByType(Flight.class); + + String flightName = decorator.toString(flight); + properties.put("name", flightName); + } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorage.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorage.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorage.java 2012-08-20 12:12:05 UTC (rev 441) @@ -25,11 +25,16 @@ import com.google.common.base.Charsets; import com.google.common.io.Files; +import fr.ulr.sammoa.application.DecoratorService; +import fr.ulr.sammoa.application.SammoaContext; +import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import java.io.BufferedReader; +import java.io.BufferedWriter; import java.io.File; import java.io.IOException; +import java.io.Serializable; import java.util.Properties; /** @@ -40,8 +45,10 @@ * @see FlightStorage * @since 0.6 */ -class SammoaStorage { +abstract class SammoaStorage<E> implements Serializable { + private static final long serialVersionUID = 1L; + /** Root directory for this storage. */ private final File directory; @@ -54,6 +61,8 @@ /** Name of the properties file of the storage. */ private final String propertiesFilename; + public abstract void fillProperties(E entity, DecoratorService decoratorService); + SammoaStorage(File dataDirectory, String id, String propertiesFilename) { @@ -75,7 +84,7 @@ return new File(directory, propertiesFilename); } - public Properties getProperties() throws IOException { + public Properties getProperties() { return properties; } @@ -89,4 +98,18 @@ IOUtils.closeQuietly(reader); } } + + public void saveProperties() throws IOException { + BufferedWriter writer = Files.newWriter(getPropertiesFile(), Charsets.UTF_8); + try { + properties.store(writer, "Saved by " + getClass().getName()); + writer.close(); + } finally { + IOUtils.closeQuietly(writer); + } + } + + public void delete() throws IOException { + FileUtils.deleteDirectory(getDirectory()); + } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorages.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorages.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorages.java 2012-08-20 12:12:05 UTC (rev 441) @@ -88,14 +88,6 @@ } } - public static void deleteCampaignStorage(CampaignStorage storage) { - try { - FileUtils.deleteDirectory(storage.getDirectory()); - } catch (IOException e) { - throw new SammoaTechnicalException("Could not delete campaign storage", e); - } - } - public static FlightStorage createFlightStorage(CampaignStorage source, String flightId) { try { @@ -107,14 +99,6 @@ } } - public static void deleteFlightStorage(FlightStorage storage) { - try { - FileUtils.deleteDirectory(storage.getDirectory()); - } catch (IOException e) { - throw new SammoaTechnicalException("Could not delete flight storage", e); - } - } - protected static void createEmptyCampaignStructure(CampaignStorage storage) throws IOException { FileUtils.forceMkdir(storage.getDirectory()); FileUtils.forceMkdir(storage.getFlightDirectory()); Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java 2012-08-20 12:12:05 UTC (rev 441) @@ -24,10 +24,19 @@ */ import fr.ulr.sammoa.application.SammoaServiceSupport; +import fr.ulr.sammoa.application.SammoaTechnicalException; +import fr.ulr.sammoa.application.io.CampaignStorage; +import fr.ulr.sammoa.application.io.SammoaStorages; +import org.apache.commons.io.filefilter.DirectoryFileFilter; import org.nuiton.util.TimeLog; +import org.nuiton.util.ZipUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.FileFilter; +import java.io.IOException; + /** * Service to import sammoa files. * @@ -60,4 +69,25 @@ timeLog.log(startTime, "importApplication", "after Callback execution"); } + + public CampaignStorage loadCampaignStorage(File file) { + File tmpDirectory = context.getConfig().getTmpDirectory(); + File deflateDirectory = new File(tmpDirectory, file.getName() + "_" + System.nanoTime()); + if (logger.isInfoEnabled()) { + logger.info("Will deflate sammoa storage {} to {}", file, + deflateDirectory); + } + try { + ZipUtil.uncompress(file, deflateDirectory); + } catch (IOException e) { + throw new SammoaTechnicalException( + "Could not deflate sammoa storage", e); + } + File[] files = deflateDirectory.listFiles((FileFilter) DirectoryFileFilter.DIRECTORY); + File campaignDirectory = files[0]; + String campaignId = campaignDirectory.getName(); + CampaignStorage storage = SammoaStorages.getCampaignStorage( + deflateDirectory, campaignId); + return storage; + } } \ No newline at end of file Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-20 12:12:05 UTC (rev 441) @@ -24,12 +24,17 @@ */ import com.google.common.base.Preconditions; +import fr.ulr.sammoa.application.DecoratorService; import fr.ulr.sammoa.application.FlightService; import fr.ulr.sammoa.application.SammoaServiceSupport; import fr.ulr.sammoa.application.SammoaTechnicalException; import fr.ulr.sammoa.application.io.CampaignStorage; +import fr.ulr.sammoa.application.io.FlightStorage; import fr.ulr.sammoa.application.io.SammoaStorages; +import fr.ulr.sammoa.persistence.Campaign; +import fr.ulr.sammoa.persistence.CampaignDAO; import fr.ulr.sammoa.persistence.Flight; +import fr.ulr.sammoa.persistence.FlightDAO; import fr.ulr.sammoa.persistence.GeoPoint; import fr.ulr.sammoa.persistence.Observation; import fr.ulr.sammoa.persistence.Route; @@ -109,6 +114,7 @@ CampaignStorage targetStorage = SammoaStorages.copyCampaignStorage( storage, targetDirectory, true, flightIds); + fillAndsaveStorageProperties(targetStorage); startTime = TIME_LOG.log(startTime, "exportApplication", "after create Storage structure"); @@ -131,6 +137,39 @@ "after export db to csv files "); } + private void fillAndsaveStorageProperties(CampaignStorage storage) { + + + TopiaContext tx = beginTransaction(); + try { + DecoratorService decoratorService = + newService(DecoratorService.class); + + CampaignDAO campaignDAO = SammoaDAOHelper.getCampaignDAO(tx); + FlightDAO flightDAO = SammoaDAOHelper.getFlightDAO(tx); + + Campaign campaign = campaignDAO.findByTopiaId(storage.getId()); + + storage.fillProperties(campaign, decoratorService); + storage.saveProperties(); + for (String flightId : storage.getFlightIds()) { + + FlightStorage flightStorage = storage.getFlightStorage(flightId); + Flight flight = flightDAO.findByTopiaId(flightId); + flightStorage.fillProperties(flight, decoratorService); + flightStorage.saveProperties(); + } + } catch (TopiaException e) { + throw new SammoaTechnicalException(e); + } catch (IOException e) { + throw new SammoaTechnicalException(e); + } finally { + endTransaction(tx); + } + + + } + protected void exportReferential(TopiaContext tx, File csvDirectory) { DbMeta<SammoaEntityEnum> dbMetas = persistence.getDbMetas(); Modified: trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties =================================================================== --- trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties 2012-08-20 12:12:05 UTC (rev 441) @@ -29,4 +29,10 @@ sammoa.config.ui.start=Start sammoa.config.ui.stop=Stop sammoa.copyright.text=Copyright CRMM 2012 +sammoa.datePattern=dd/MM/yyyy +sammoa.dateTimePattern=dd/MM/yyyy HH\:mm\:ss sammoa.dbf.import.error.unableToReadField=impossible to read value for column %s at line %s +sammoa.flight.decorator.flight=Flight %1$d +sammoa.flight.decorator.newFlight=New flight +sammoa.flight.decorator.notEnded=not ended +sammoa.flight.decorator.notStarted=not started Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java 2012-08-20 12:12:05 UTC (rev 441) @@ -24,24 +24,18 @@ */ package fr.ulr.sammoa.ui.swing; -import fr.ulr.sammoa.persistence.Campaign; -import fr.ulr.sammoa.persistence.Flight; -import fr.ulr.sammoa.persistence.Observation; -import fr.ulr.sammoa.persistence.Observer; -import fr.ulr.sammoa.persistence.Region; -import fr.ulr.sammoa.persistence.Route; -import fr.ulr.sammoa.persistence.RouteType; -import fr.ulr.sammoa.persistence.Sector; -import fr.ulr.sammoa.persistence.Species; +import com.google.common.base.Preconditions; +import fr.ulr.sammoa.application.DecoratorService; +import fr.ulr.sammoa.application.SammoaContext; import fr.ulr.sammoa.persistence.Strate; -import fr.ulr.sammoa.persistence.StringRef; -import fr.ulr.sammoa.persistence.Transect; import fr.ulr.sammoa.ui.swing.flight.StrateModel; import fr.ulr.sammoa.ui.swing.flight.TransectModel; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; +import jaxx.runtime.swing.renderer.DecoratorTableCellRenderer; import org.nuiton.util.decorator.Decorator; -import org.nuiton.util.decorator.DecoratorProvider; -import java.text.SimpleDateFormat; +import javax.swing.ListCellRenderer; +import javax.swing.table.TableCellRenderer; import static org.nuiton.i18n.I18n._; @@ -49,27 +43,17 @@ * Created: 29/05/12 * * @author fdesbois <desbois@codelutin.com> + * @author tchemit <chemit@codelutin.com> */ -public class SammoaDecoratorProvider extends DecoratorProvider { +public class SammoaDecoratorProvider extends DecoratorService { - protected SimpleDateFormat dateFormat = new SimpleDateFormat(_("sammoa.dateTimePattern")); - @Override - protected void loadDecorators() { - registerJXPathDecorator(Route.class, "${beginTime}$tH:%1$tM:%1$tS ${routeType}$s"); - registerJXPathDecorator(Observation.class, "${observationNumber}$s ${observationTime}$tH:%2$tM:%2$tS"); - registerJXPathDecorator(Transect.class, "${name}$s"); - registerJXPathDecorator(Observer.class, "${initials}$s"); - registerMultiJXPathDecorator(Strate.class, "${code}$s##${name}$s", "##", " - "); - registerMultiJXPathDecorator(RouteType.class, "${name}$s", "##", " - "); - registerMultiJXPathDecorator(Species.class, "${code}$s##${commonName}$s", "##", " - "); - registerMultiJXPathDecorator(StringRef.class, "${value}$s", "##", " - "); + public void setSammoaContext(SammoaContext context) { + super.setSammoaContext(context); - registerJXPathDecorator(TransectModel.class, "${source/name}$s"); - registerJXPathDecorator(Sector.class, "${name}$s"); - registerJXPathDecorator(Region.class, "${code}$s"); - registerMultiJXPathDecorator(Campaign.class, "${code}$s##${region/code}$s", "##", " - "); - registerDecorator(new Decorator<StrateModel>(StrateModel.class) { + // add extra ui decorators + decoratorProvider.registerJXPathDecorator(TransectModel.class, "${source/name}$s"); + decoratorProvider.registerDecorator(new Decorator<StrateModel>(StrateModel.class) { private static final long serialVersionUID = 1L; @@ -89,36 +73,27 @@ return result; } }); - registerDecorator(new Decorator<Flight>(Flight.class) { + } - private static final long serialVersionUID = 1L; + public <O> ListCellRenderer newListCellRender(Class<O> type) { - @Override - public String toString(Object bean) { - Flight flight = (Flight) bean; + Preconditions.checkNotNull(type); - String result; - if (flight == null) { - result = _("sammoa.flight.decorator.newFlight"); + Decorator<O> decorator = getDecoratorByType(type); + Preconditions.checkNotNull(decorator); - } else { + DecoratorListCellRenderer result = new DecoratorListCellRenderer(decorator); + return result; + } - result = _("sammoa.flight.decorator.flight", flight.getFlightNumber()); - if (flight.getBeginDate() != null) { - result += " - " + dateFormat.format(flight.getBeginDate()); + public <O> TableCellRenderer newTableCellRender(Class<O> type) { - if (flight.getEndDate() != null) { - result += " - " + dateFormat.format(flight.getEndDate()); - } else { - result += " - " + _("sammoa.flight.decorator.notEnded"); - } + Preconditions.checkNotNull(type); - } else { - result += " - " + _("sammoa.flight.decorator.notStarted"); - } - } - return result; - } - }); + Decorator<O> decorator = getDecoratorByType(type); + Preconditions.checkNotNull(decorator); + + DecoratorTableCellRenderer result = new DecoratorTableCellRenderer(decorator); + return result; } } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-20 12:12:05 UTC (rev 441) @@ -81,7 +81,7 @@ } public <S extends SammoaService> S newService(Class<S> serviceType) { - return getAppContext().newService(serviceType); + return context.newService(serviceType); } public SammoaConfig getConfig() { @@ -114,7 +114,7 @@ public SammoaDecoratorProvider getDecoratorProvider() { if (decoratorProvider == null) { - decoratorProvider = new SammoaDecoratorProvider(); + decoratorProvider = newService(SammoaDecoratorProvider.class); } return decoratorProvider; } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.css 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.css 2012-08-20 12:12:05 UTC (rev 441) @@ -40,7 +40,7 @@ #regionComboBox{ model:{regionListModel}; enabled:{!getModel().isUpdate()}; - renderer:{new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())}; + /*renderer:{new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};*/ } #editRegionButton { Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.jaxx 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.jaxx 2012-08-20 12:12:05 UTC (rev 441) @@ -31,7 +31,6 @@ jaxx.runtime.swing.JAXXDatePicker jaxx.runtime.swing.model.GenericListModel - jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer jaxx.runtime.swing.editor.FileEditor jaxx.runtime.validator.swing.SwingValidatorUtil jaxx.runtime.validator.swing.SwingValidatorMessageTableModel Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -35,7 +35,6 @@ import fr.ulr.sammoa.persistence.Region; import fr.ulr.sammoa.persistence.Strate; import fr.ulr.sammoa.persistence.Transect; -import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider; import fr.ulr.sammoa.ui.swing.SammoaScreen; import fr.ulr.sammoa.ui.swing.SammoaUIContext; import fr.ulr.sammoa.ui.swing.SammoaUIHandler; @@ -66,7 +65,8 @@ */ public class CampaignUIHandler implements SammoaUIHandler { - private static final Logger logger = LoggerFactory.getLogger(CampaignUIHandler.class); + private static final Logger logger = + LoggerFactory.getLogger(CampaignUIHandler.class); protected SammoaUIContext context; @@ -84,8 +84,7 @@ protected final FlightService flightService; - public CampaignUIHandler(SammoaUIContext context, - CampaignUI ui) { + public CampaignUIHandler(SammoaUIContext context, CampaignUI ui) { this.context = context; this.ui = ui; this.uiImporter = new UIImporter(this.ui); @@ -94,21 +93,12 @@ this.importCsvService = context.newService(ImportCsvService.class); this.flightService = context.newService(FlightService.class); this.referentialService = context.newService(ReferentialService.class); - } protected CampaignUIModel getModel() { return ui.getModel(); } - public RegionUI getRegionUI() { - return regionUi; - } - - public SammoaDecoratorProvider getDecoratorProvider() { - return context.getDecoratorProvider(); - } - @Override public void beforeInitUI() { @@ -136,15 +126,18 @@ regionUi = new RegionUI(context); - getRegionUI().addComponentListener(regionUIListener); + regionUi.addComponentListener(regionUIListener); + ui.getRegionComboBox().setRenderer( + context.getDecoratorProvider().newListCellRender(Region.class)); + SwingValidatorUtil.installUI(ui.getErrorTable(), new SwingValidatorMessageTableRenderer()); } @Override public void onCloseUI() { - getRegionUI().removeComponentListener(regionUIListener); + regionUi.removeComponentListener(regionUIListener); } public void showNewRegion() { @@ -154,10 +147,10 @@ } // Prepare model - RegionUIModel regionModel = getRegionUI().getModel(); + RegionUIModel regionModel = regionUi.getModel(); regionModel.prepareCreate(getModel().getRegionReferential()); - getRegionUI().getHandler().openUI(); + regionUi.getHandler().openUI(); } public void showEditRegion() { @@ -165,14 +158,15 @@ Region selectedRegion = getModel().getRegion(); if (logger.isInfoEnabled()) { - logger.info(String.format("Prepare the RegionUI with id = %s", selectedRegion.getTopiaId())); + logger.info("Prepare the RegionUI with id = {}", + selectedRegion.getTopiaId()); } // Prepare model - RegionUIModel regionModel = getRegionUI().getModel(); + RegionUIModel regionModel = regionUi.getModel(); regionModel.prepareUpdate(selectedRegion); - getRegionUI().getHandler().openUI(); + regionUi.getHandler().openUI(); } public void saveCampaign() { @@ -194,9 +188,8 @@ if (strateFile != null && strateFile.exists()) { if (logger.isInfoEnabled()) { - logger.info(String.format("Import strates file %s", - strateFile.getAbsolutePath()) - ); + logger.info("Import strates file {}", + strateFile.getAbsolutePath()); } success &= uiImporter.importShape(strateImporter, campaignStorage, strateFile); @@ -206,9 +199,8 @@ if (transectFile != null && transectFile.exists()) { if (logger.isInfoEnabled()) { - logger.info(String.format("Import transects file %s", - transectFile.getAbsolutePath()) - ); + logger.info("Import transects file {}", + transectFile.getAbsolutePath()); } success &= uiImporter.importShape(transectImporter, @@ -220,9 +212,8 @@ if (observerFile != null && observerFile.exists()) { if (logger.isInfoEnabled()) { - logger.info(String.format("Import observers file %s", - observerFile.getAbsolutePath()) - ); + logger.info("Import observers file {}", + observerFile.getAbsolutePath()); } success &= uiImporter.importCvs(observerImporter, observerFile); @@ -266,7 +257,7 @@ // On hide : retrieve the region saved and reset the region combo - String regionId = getRegionUI().getModel().getId(); + String regionId = regionUi.getModel().getId(); if (regionId == null) { // nothing to do, no creation is done @@ -274,12 +265,12 @@ } else { if (logger.isInfoEnabled()) { - logger.info(String.format("Retrieve from RegionUI the id = %s", regionId)); + logger.info("Retrieve from RegionUI the id = {}", regionId); } List<Region> regions = getModel().getRegionReferential(); - Region regionSaved = getRegionUI().getModel().newBean(); + Region regionSaved = regionUi.getModel().newBean(); if (regions.contains(regionSaved)) { // nothing to do, the element exist in the list Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.css 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.css 2012-08-20 12:12:05 UTC (rev 441) @@ -110,13 +110,13 @@ #observerSelector { enabled:{model.getFlightState() == FlightState.WAITING}; - renderer:{new ObserverListCellRenderer(listCellRenderer)}; + /*renderer:{new ObserverListCellRenderer(listCellRenderer)};*/ model:{observerListSelectorModel}; } -#strateCombobox { +/*#strateCombobox { renderer:{new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())} -} +}*/ #transectLabel { text:"sammoa.label.transects"; @@ -129,7 +129,7 @@ #transectList { model:{transectListModel}; selectionModel:{transectSelectionModel}; - cellRenderer:{new TransectListCellRenderer(listCellRenderer)}; + /*cellRenderer:{new TransectListCellRenderer(listCellRenderer)};*/ } #transectNewButton { Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.jaxx 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.jaxx 2012-08-20 12:12:05 UTC (rev 441) @@ -33,8 +33,6 @@ com.bbn.openmap.gui.OverlayMapPanel - jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer - fr.ulr.sammoa.persistence.Flight fr.ulr.sammoa.persistence.Observer fr.ulr.sammoa.application.flightController.FlightState @@ -78,7 +76,7 @@ orientation='{JSplitPane.VERTICAL_SPLIT}' resizeWeight='0.3'> - <ListCellRenderer id='listCellRenderer' initializer='new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())'/> + <!--ListCellRenderer id='listCellRenderer' initializer='new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())'/--> <ObserverListSelectorModel id='observerListSelectorModel' constructorParams='model'/> @@ -177,7 +175,7 @@ <JScrollPane> <TransectTable id='transectTable' - constructorParams='transectTableModel, handler.getDecoratorProvider()'/> + constructorParams='transectTableModel'/> </JScrollPane> </JSplitPane> Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -95,9 +95,12 @@ import fr.ulr.sammoa.ui.swing.flight.layer.SimpleGeoPointLayer; import fr.ulr.sammoa.ui.swing.flight.layer.TransectLayer; import fr.ulr.sammoa.ui.swing.transect.TransectUI; +import fr.ulr.sammoa.ui.swing.util.ColorTableCellRenderer; import fr.ulr.sammoa.ui.swing.util.SammoaUtil; import jaxx.runtime.JAXXObject; import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.JAXXWidgetUtil; +import jaxx.runtime.swing.editor.cell.NumberCellEditor; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.TimeLog; import org.slf4j.Logger; @@ -111,8 +114,11 @@ import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.KeyStroke; +import javax.swing.ListCellRenderer; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.ItemEvent; @@ -156,6 +162,8 @@ protected final ReferentialService referentialService; + protected final SammoaDecoratorProvider decoratorProvider; + public FlightUIHandler(SammoaUIContext context, FlightUI ui) { this.context = context; this.context.setFlightUIHandler(this); @@ -164,6 +172,7 @@ this.flightService = context.newService(FlightService.class); this.referentialService = context.newService(ReferentialService.class); + this.decoratorProvider = context.getDecoratorProvider(); } public FlightController getFlightController() { @@ -174,10 +183,6 @@ return ui.getModel(); } - public SammoaDecoratorProvider getDecoratorProvider() { - return context.getDecoratorProvider(); - } - @Override public void beforeInitUI() { @@ -209,7 +214,6 @@ } } -// List<Strate> strates = referentialService.getAllStrates(campaign); List<Transect> transects = referentialService.getAllTransects(campaign); if (logger.isInfoEnabled()) { @@ -223,7 +227,6 @@ context.newService(FlightControllerDefault.class); -// flightController = new FlightControllerDefault(context.getAppContext(), flight); flightController = context.newService(FlightControllerDefault.class); try { @@ -354,6 +357,75 @@ timeLog.log(uiStartTime, "initUI"); + ListCellRenderer observerListCellRenderer = + decoratorProvider.newListCellRender(Observer.class); + + { + // init transect table + + TransectTable transectTable = ui.getTransectTable(); + + TransectTableModel transectTableModel = ui.getTransectTableModel(); + + // for boolean + TableCellRenderer booleanCellRenderer = transectTable.getDefaultRenderer(Boolean.class); + TransectBooleanTableCell booleanTableCell = new TransectBooleanTableCell(booleanCellRenderer, transectTable.getActionButtons()); + transectTable.setDefaultRenderer(Boolean.class, booleanTableCell); + + transectTable.setDefaultEditor( + Observer.class, + new ObserverTableCellEditor(transectTableModel.getReference(), + observerListCellRenderer)); + + transectTable.setDefaultRenderer(Observer.class, + decoratorProvider.newTableCellRender(Observer.class)); + + // Set specific renderer for NbTimes column + TableCellRenderer defaultRenderer = transectTable.getDefaultRenderer(String.class); + TransectCrossingNumberCellRenderer cellRenderer = new TransectCrossingNumberCellRenderer(defaultRenderer, transectTableModel); + transectTable.getColumnModel().getColumn(TransectTableModel.TransectColumn.CROSSING_NUMBER.ordinal()).setCellRenderer(cellRenderer); + + transectTable.setDefaultEditor(Boolean.class, booleanTableCell); + + NumberCellEditor<Integer> numberCellEditor = JAXXWidgetUtil.newNumberTableCellEditor(Integer.class, false); + transectTable.setDefaultEditor(Integer.class, numberCellEditor); + transectTable.setDefaultEditor(int.class, numberCellEditor); + + // Position left column + { + TableColumn column = transectTable.getColumn(TransectTableModel.TransectColumn.POSITION_LEFT.ordinal()); + column.setHeaderRenderer(new ColorTableCellRenderer(defaultRenderer, SammoaColors.POSITION_LEFT_COLOR)); + } + + // Position right column + { + TableColumn column = transectTable.getColumn(TransectTableModel.TransectColumn.POSITION_RIGHT.ordinal()); + column.setHeaderRenderer(new ColorTableCellRenderer(defaultRenderer, SammoaColors.POSITION_RIGHT_COLOR)); + } + + transectTable.addHighlighter( + SammoaUtil.newColorHighlighter( + new CurrentTransectHighlightPredicate(transectTableModel), + SammoaColors.CURRENT_TRANSECT_ROW_COLOR) + ); + + transectTable.addHighlighter( + SammoaUtil.newColorHighlighter( + new NextTransectHighlightPredicate(transectTableModel), + SammoaColors.NEXT_TRANSECT_ROW_COLOR) + ); + + transectTable.setSortable(false); + } + + ui.getStrateCombobox().setRenderer( + decoratorProvider.newListCellRender(Strate.class)); + ui.getObserverSelector().setRenderer( + new ObserverListCellRenderer(observerListCellRenderer) + ); + ui.getTransectList().setCellRenderer( + new TransectListCellRenderer(decoratorProvider.newListCellRender((Transect.class)))); + long startTime = TimeLog.getTime(); // Init the actions Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverTableCellEditor.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverTableCellEditor.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverTableCellEditor.java 2012-08-20 12:12:05 UTC (rev 441) @@ -24,13 +24,12 @@ package fr.ulr.sammoa.ui.swing.flight; import fr.ulr.sammoa.persistence.Observer; -import fr.ulr.sammoa.ui.swing.SammoaUIContext; import jaxx.runtime.swing.model.GenericListModel; -import jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer; import javax.swing.AbstractCellEditor; import javax.swing.JComboBox; import javax.swing.JTable; +import javax.swing.ListCellRenderer; import javax.swing.table.TableCellEditor; import java.awt.Component; import java.awt.event.ActionEvent; @@ -47,11 +46,12 @@ private static final long serialVersionUID = 1L; - protected DecoratorProviderListCellRenderer decoratorProviderListCellRenderer; + protected ListCellRenderer cellRenderer; protected GenericListModel<Observer> model; - public ObserverTableCellEditor(FlightUIModel flightUIModel) { + public ObserverTableCellEditor(FlightUIModel flightUIModel, + ListCellRenderer cellRenderer) { model = new GenericListModel<Observer>(); model.setElements(flightUIModel.getFlightObserverForPositions()); @@ -63,7 +63,7 @@ model.setElements((List<Observer>) evt.getNewValue()); } }); - decoratorProviderListCellRenderer = new DecoratorProviderListCellRenderer(SammoaUIContext.getUIContext().getDecoratorProvider()); + this.cellRenderer = cellRenderer; } @Override @@ -72,10 +72,14 @@ } @Override - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + public Component getTableCellEditorComponent(JTable table, + Object value, + boolean isSelected, + int row, + int column) { model.setSelectedItem(value); JComboBox result = new JComboBox(model); - result.setRenderer(decoratorProviderListCellRenderer); + result.setRenderer(cellRenderer); result.addActionListener(new ActionListener() { @Override Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectBooleanTableCell.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectBooleanTableCell.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectBooleanTableCell.java 2012-08-20 12:12:05 UTC (rev 441) @@ -0,0 +1,117 @@ +package fr.ulr.sammoa.ui.swing.flight; +/* + * #%L + * SAMMOA :: UI Swing + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 UMS 3462, Code Lutin + * %% + * 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 jaxx.runtime.swing.JAXXWidgetUtil; +import jaxx.runtime.swing.editor.BooleanCellEditor; + +import javax.swing.AbstractCellEditor; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JTable; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import java.awt.Component; +import java.util.List; + +/** +* TODO +* +* @author tchemit <chemit@codelutin.com> +* @since TODO +*/ +public class TransectBooleanTableCell extends AbstractCellEditor + implements TableCellRenderer, TableCellEditor { + + private static final long serialVersionUID = 1L; + + protected final BooleanCellEditor delegateEditor; + + protected final List<JButton> actionButtons; + + public TransectBooleanTableCell(TableCellRenderer cellRenderer, + List<JButton> actionButtons) { + delegateEditor = JAXXWidgetUtil.newBooleanTableCellEditor(cellRenderer); + this.actionButtons = actionButtons; + } + + @Override + public Component getTableCellRendererComponent(JTable table, + Object value, + boolean isSelected, + boolean hasFocus, + int row, + int column) { + + TransectTableModel.TransectColumn transectColumn = + TransectTableModel.TransectColumn.valueOf(column); + + Component result = null; + switch (transectColumn) { + + case DELETED: + JComponent render = (JComponent) delegateEditor.getTableCellRendererComponent( + table, value, isSelected, hasFocus, row, column); + + result = render; + break; + case ACTION: + JButton button = actionButtons.get(row); + button.setEnabled((Boolean) value); + result = button; + + default: + } + return result; + } + + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + + TransectTableModel.TransectColumn transectColumn = + TransectTableModel.TransectColumn.valueOf(column); + + Component result = null; + switch (transectColumn) { + + case DELETED: + result = delegateEditor.getTableCellEditorComponent( + table, value, isSelected, row, column); + break; + case ACTION: + JButton button = actionButtons.get(row); + button.setEnabled((Boolean) value); + result = button; + + default: + } + return result; + } + + @Override + public Object getCellEditorValue() { + return delegateEditor.getCellEditorValue(); + } +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectBooleanTableCell.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTable.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTable.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTable.java 2012-08-20 12:12:05 UTC (rev 441) @@ -25,32 +25,20 @@ import com.google.common.collect.Lists; import fr.ulr.sammoa.persistence.Flight; -import fr.ulr.sammoa.persistence.Observer; import fr.ulr.sammoa.persistence.Route; import fr.ulr.sammoa.persistence.TransectFlight; import fr.ulr.sammoa.ui.swing.SammoaColors; import fr.ulr.sammoa.ui.swing.SammoaUIContext; import fr.ulr.sammoa.ui.swing.action.NextTransectAction; import fr.ulr.sammoa.ui.swing.util.ColorTableCellRenderer; -import fr.ulr.sammoa.ui.swing.util.SammoaUtil; -import jaxx.runtime.swing.JAXXWidgetUtil; -import jaxx.runtime.swing.editor.BooleanCellEditor; -import jaxx.runtime.swing.editor.cell.NumberCellEditor; -import jaxx.runtime.swing.renderer.DecoratorProviderTableCellRenderer; import org.jdesktop.swingx.JXTable; -import org.nuiton.util.decorator.DecoratorProvider; -import javax.swing.AbstractCellEditor; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JTable; import javax.swing.event.TableModelEvent; -import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; -import java.awt.Component; import java.beans.IndexedPropertyChangeEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -76,58 +64,13 @@ protected List<JButton> actionButtons; - public TransectTable(TransectTableModel model, - DecoratorProvider decoratorProvider) { + public TransectTable(TransectTableModel model) { super(model); - addHighlighter( - SammoaUtil.newColorHighlighter( - new CurrentTransectHighlightPredicate(model), - SammoaColors.CURRENT_TRANSECT_ROW_COLOR) - ); - - addHighlighter( - SammoaUtil.newColorHighlighter( - new NextTransectHighlightPredicate(model), - SammoaColors.NEXT_TRANSECT_ROW_COLOR) - ); - -// this.handler = new TransectTableHandler(this); - - setSortable(false); - - // for boolean - TableCellRenderer booleanCellRenderer = getDefaultRenderer(Boolean.class); - TransectBooleanTableCell booleanTableCell = new TransectBooleanTableCell(booleanCellRenderer); - setDefaultRenderer(Boolean.class, booleanTableCell); - - // using decorator provider - DecoratorProviderTableCellRenderer providerTableCellRenderer = - new DecoratorProviderTableCellRenderer(decoratorProvider); - - setDefaultEditor(Observer.class, new ObserverTableCellEditor(model.getReference())); - - setDefaultRenderer(Observer.class, providerTableCellRenderer); - - // Set specific renderer for NbTimes column - TableCellRenderer defaultRenderer = getDefaultRenderer(String.class); - TransectCrossingNumberCellRenderer cellRenderer = new TransectCrossingNumberCellRenderer(defaultRenderer, getModel()); - getColumnModel().getColumn(TransectTableModel.TransectColumn.CROSSING_NUMBER.ordinal()).setCellRenderer(cellRenderer); - - setDefaultEditor(Boolean.class, booleanTableCell); - - NumberCellEditor<Integer> numberCellEditor = JAXXWidgetUtil.newNumberTableCellEditor(Integer.class, false); - setDefaultEditor(Integer.class, numberCellEditor); - setDefaultEditor(int.class, numberCellEditor); - - initPositionColumnHeaderColors(); - for (int i = 0; i < getModel().getRowCount(); i++) { addActionButton(i); } -// handler.init(); - PropertyChangeListener propertyChangeListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { @@ -262,77 +205,6 @@ } } - public class TransectBooleanTableCell extends AbstractCellEditor - implements TableCellRenderer, TableCellEditor { - - private static final long serialVersionUID = 1L; - - protected BooleanCellEditor delegateEditor; - - public TransectBooleanTableCell(TableCellRenderer cellRenderer) { - delegateEditor = JAXXWidgetUtil.newBooleanTableCellEditor(cellRenderer); - } - - @Override - public Component getTableCellRendererComponent(JTable table, - Object value, - boolean isSelected, - boolean hasFocus, - int row, - int column) { - - TransectTableModel.TransectColumn transectColumn = - TransectTableModel.TransectColumn.valueOf(column); - - Component result = null; - switch (transectColumn) { - - case DELETED: - JComponent render = (JComponent) delegateEditor.getTableCellRendererComponent( - table, value, isSelected, hasFocus, row, column); - - result = render; - break; - case ACTION: - JButton button = getActionButtons().get(row); - button.setEnabled((Boolean) value); - result = button; - - default: - } - return result; - } - - - @Override - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - - TransectTableModel.TransectColumn transectColumn = - TransectTableModel.TransectColumn.valueOf(column); - - Component result = null; - switch (transectColumn) { - - case DELETED: - result = delegateEditor.getTableCellEditorComponent( - table, value, isSelected, row, column); - break; - case ACTION: - JButton button = getActionButtons().get(row); - button.setEnabled((Boolean) value); - result = button; - - default: - } - return result; - } - - @Override - public Object getCellEditorValue() { - return delegateEditor.getCellEditorValue(); - } - } - public void onCurrentRouteChanged(Route oldValue, Route newValue) { // Change of flight route status : begin, add, cb, end Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css 2012-08-20 12:12:05 UTC (rev 441) @@ -29,7 +29,7 @@ #campaignCombobox { model: {campaignListModel}; - renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())}; + /*renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};*/ } #systemIdLabel { @@ -48,7 +48,7 @@ #flightCombobox { enabled: {getModel().getCampaign() != null}; model: {flightListModel}; - renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())}; + /*renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};*/ } #editCampaignButton { Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx 2012-08-20 12:12:05 UTC (rev 441) @@ -31,7 +31,6 @@ fr.ulr.sammoa.ui.swing.SammoaUIContext jaxx.runtime.swing.model.GenericListModel - jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer static org.nuiton.i18n.I18n._ </import> Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -84,10 +84,6 @@ return context.getConfig(); } - public SammoaDecoratorProvider getDecoratorProvider() { - return context.getDecoratorProvider(); - } - @Override public void beforeInitUI() { } @@ -95,6 +91,14 @@ @Override public void afterInitUI() { + SammoaDecoratorProvider decoratorProvider = + context.getDecoratorProvider(); + + ui.getCampaignCombobox().setRenderer( + decoratorProvider.newListCellRender(Campaign.class)); + ui.getFlightCombobox().setRenderer( + decoratorProvider.newListCellRender(Flight.class)); + List<Campaign> campaigns = referentialService.getCampaigns(); ui.getCampaignListModel().setElements(campaigns); Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -25,8 +25,10 @@ import fr.ulr.sammoa.application.FlightService; import fr.ulr.sammoa.application.ReferentialService; +import fr.ulr.sammoa.application.io.CampaignStorage; import fr.ulr.sammoa.application.io.input.sammoa.ImportApplicationModel; import fr.ulr.sammoa.application.io.input.sammoa.ImportApplicationService; +import fr.ulr.sammoa.persistence.Campaign; import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider; import fr.ulr.sammoa.ui.swing.SammoaScreen; import fr.ulr.sammoa.ui.swing.SammoaUIContext; @@ -36,6 +38,9 @@ import org.slf4j.LoggerFactory; import javax.swing.JFrame; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.File; /** * UI Handler fo {@link ImportApplicationUI}. @@ -81,22 +86,23 @@ ui.setContextValue(this); ui.setContextValue(model); -// model.addPropertyChangeListener(new PropertyChangeListener() { -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// -// if (ExportApplicationUIModel.PROPERTY_SELECTED_CAMPAIGN.equals(evt.getPropertyName())) { -// Campaign newValue = (Campaign) evt.getNewValue(); -// onSelectedCampaignChanged(newValue); -// } else if (ExportApplicationUIModel.PROPERTY_FLIGHTS.equals(evt.getPropertyName())) { + model.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + + if (ImportApplicationUIModel.PROPERTY_STORAGE.equals(evt.getPropertyName())) { + CampaignStorage newValue = (CampaignStorage) evt.getNewValue(); + onCampaignStorageChanged(newValue); + } +// else if (ImportApplicationUIModel.PROPERTY_FLIGHTS.equals(evt.getPropertyName())) { // Collection<Flight> newValue = (Collection<Flight>) evt.getNewValue(); // onFlightsChanged(newValue); -// } else if (ExportApplicationUIModel.PROPERTY_SELECTED_FLIGHT.equals(evt.getPropertyName())) { +// } else if (ImportApplicationUIModel.PROPERTY_SELECTED_FLIGHT.equals(evt.getPropertyName())) { // Flight newValue = (Flight) evt.getNewValue(); // onSelectedFlightChanged(newValue); // } -// } -// }); + } + }); } @Override @@ -107,6 +113,19 @@ public void onCloseUI() { } + public void loadStorage(File file) { + + // reset any previous loaded storage + getModel().setStorage(null); + + // load storage + CampaignStorage storage = importService.loadCampaignStorage(file); + + // save it in model + getModel().setStorage(storage); + + } + public void importApplication() { JFrame frame = ui.getParentContainer(JFrame.class); @@ -129,4 +148,25 @@ return ui.getModel(); } + protected void onCampaignStorageChanged(CampaignStorage storage) { + String campaignId = storage.getId(); + + if (logger.isInfoEnabled()) { + logger.info("Will load campaing {}", campaignId); + } + Campaign campaign = referentialService.getCampaign(campaignId); + ImportApplicationUIModel model = getModel(); + + + if (campaign == null) { + + // new campaign + model.setNewCampaign(campaign); + } else { + + // existing campaign + model.setExistingCampaign(campaign); + } + } + } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIModel.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIModel.java 2012-08-20 12:12:05 UTC (rev 441) @@ -24,6 +24,7 @@ */ import com.google.common.collect.Lists; +import fr.ulr.sammoa.application.io.CampaignStorage; import fr.ulr.sammoa.application.io.input.sammoa.ImportApplicationModel; import fr.ulr.sammoa.persistence.Campaign; import fr.ulr.sammoa.persistence.Flight; @@ -54,9 +55,14 @@ public static final String PROPERTY_IMPORT_FILE = "importFile"; + public static final String PROPERTY_STORAGE = "storage"; + /** File to import. */ protected File importFile; + /** Loaded campaign storage. */ + protected CampaignStorage storage; + /** Existing campaign. */ protected Campaign existingCampaign; @@ -82,6 +88,16 @@ firePropertyChange(PROPERTY_IMPORT_FILE, oldValue, importFile); } + public CampaignStorage getStorage() { + return storage; + } + + public void setStorage(CampaignStorage storage) { + CampaignStorage oldValue = this.storage; + this.storage = storage; + firePropertyChange(PROPERTY_STORAGE, oldValue, storage); + } + public Campaign getExistingCampaign() { return existingCampaign; } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css 2012-08-20 12:12:05 UTC (rev 441) @@ -30,9 +30,9 @@ text: "sammoa.label.campaign"; } -#campaignCombobox { +/*#campaignCombobox { renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())}; -} +}*/ #campainPeriodFilter { border:{new TitledBorder(_("sammoa.label.campaign.period.filter"))}; Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx 2012-08-20 12:12:05 UTC (rev 441) @@ -34,7 +34,6 @@ jaxx.runtime.swing.editor.bean.BeanListHeader jaxx.runtime.swing.JAXXDatePicker - jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer java.awt.BorderLayout java.awt.event.ItemEvent Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -86,18 +86,17 @@ protected final ReferentialService referentialService; + protected final SammoaDecoratorProvider decoratorProvider; + public ExportMapUIHandler(SammoaUIContext context, ExportMapUI ui) { this.context = context; this.ui = ui; this.referentialService = context.newService(ReferentialService.class); this.exportService = context.newService(ExportMapService.class); + this.decoratorProvider = context.getDecoratorProvider(); } - public SammoaDecoratorProvider getDecoratorProvider() { - return context.getDecoratorProvider(); - } - @Override public void beforeInitUI() { @@ -148,6 +147,10 @@ @Override public void afterInitUI() { + + ui.getCampaignCombobox().setRenderer( + decoratorProvider.newListCellRender(Campaign.class)); + ExportMapUIModel model = getModel(); model.setExportEffortsFilename("Efforts"); @@ -202,7 +205,7 @@ // reset strates,... if (logger.isInfoEnabled()) { Decorator<Campaign> decorator = - getDecoratorProvider().getDecoratorByType(Campaign.class); + decoratorProvider.getDecoratorByType(Campaign.class); logger.info("New selected campain: {}", decorator.toString(newCampaign)); } @@ -500,7 +503,7 @@ OneClicListSelectionModel.installModel(jList); // init list - Decorator<E> decorator = getDecoratorProvider().getDecoratorByType(beanType); + Decorator<E> decorator = decoratorProvider.getDecoratorByType(beanType); Preconditions.checkNotNull(decorator, "No decorator found for type " + beanType); if (logger.isDebugEnabled()) { Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css 2012-08-20 12:12:05 UTC (rev 441) @@ -38,17 +38,17 @@ text: "sammoa.label.campaign"; } -#campaignCombobox { +/*#campaignCombobox { renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())}; -} +}*/ #flightLabel { text: "sammoa.label.flight"; } -#flightCombobox { +/*#flightCombobox { renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())}; -} +}*/ #quitButton { text:"sammoa.action.quitExportMaps"; Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx 2012-08-20 12:12:05 UTC (rev 441) @@ -29,8 +29,6 @@ fr.ulr.sammoa.persistence.Flight fr.ulr.sammoa.ui.swing.SammoaUIContext - jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer - java.awt.BorderLayout java.awt.event.ItemEvent java.io.File Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -36,6 +36,7 @@ import fr.ulr.sammoa.ui.swing.util.SammoaUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ErrorDialogUI; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; import org.nuiton.util.FileUtil; import org.nuiton.util.decorator.Decorator; import org.slf4j.Logger; @@ -72,6 +73,8 @@ protected final FlightService flightService; + protected final SammoaDecoratorProvider decoratorProvider; + public ExportApplicationUIHandler(SammoaUIContext context, ExportApplicationUI ui) { this.context = context; @@ -79,12 +82,9 @@ this.flightService = context.newService(FlightService.class); this.referentialService = context.newService(ReferentialService.class); this.exportService = context.newService(ExportApplicationService.class); + this.decoratorProvider = context.getDecoratorProvider(); } - public SammoaDecoratorProvider getDecoratorProvider() { - return context.getDecoratorProvider(); - } - @Override public void beforeInitUI() { @@ -145,6 +145,13 @@ @Override public void afterInitUI() { + + + ui.getCampaignCombobox().setRenderer(new DecoratorListCellRenderer( + decoratorProvider.getDecoratorByType(Campaign.class))); + ui.getFlightCombobox().setRenderer(new DecoratorListCellRenderer( + decoratorProvider.getDecoratorByType(Flight.class))); + ExportApplicationUIModel model = getModel(); File currentDirectory = FileUtil.getCurrentDirectory(); @@ -319,7 +326,7 @@ // reset flights,... if (logger.isInfoEnabled()) { Decorator<Campaign> decorator = - getDecoratorProvider().getDecoratorByType(Campaign.class); + decoratorProvider.getDecoratorByType(Campaign.class); logger.info("New selected campain: {}", decorator.toString(newCampaign)); } @@ -363,7 +370,7 @@ // reset flights,... if (logger.isInfoEnabled()) { Decorator<Flight> decorator = - getDecoratorProvider().getDecoratorByType(Flight.class); + decoratorProvider.getDecoratorByType(Flight.class); logger.info("New selected flight: {}", decorator.toString(newCampaign)); } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css 2012-08-20 12:12:05 UTC (rev 441) @@ -66,7 +66,7 @@ #navComboBox { enabled: {flightUIModel.getRouteEditBean() != null}; model: {navObserversModel}; - renderer: {new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())}; + /*renderer: {new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())};*/ selectedItem: {getHandler().getObserverByPosition(flightUIModel.getRouteEditBean(), Position.NAVIGATOR)}; } @@ -82,7 +82,7 @@ #leftComboBox { enabled: {flightUIModel.getRouteEditBean() != null}; model: {leftObserversModel}; - renderer: {new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())}; + /*renderer: {new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())};*/ selectedItem: {getHandler().getObserverByPosition(flightUIModel.getRouteEditBean(), Position.FRONT_LEFT)}; background: {SammoaColors.POSITION_LEFT_COLOR}; } @@ -99,7 +99,7 @@ #rightComboBox { enabled: {flightUIModel.getRouteEditBean() != null}; model: {rightObserversModel}; - renderer: {new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())}; + /*renderer: {new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())};*/ selectedItem: {getHandler().getObserverByPosition(flightUIModel.getRouteEditBean(), Position.FRONT_RIGHT)}; background: {SammoaColors.POSITION_RIGHT_COLOR}; } @@ -116,7 +116,7 @@ #conavComboBox { enabled: {flightUIModel.getRouteEditBean() != null}; model: {coNavObserversModel}; - renderer: {new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())}; + /*renderer: {new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())};*/ selectedItem: {getHandler().getObserverByPosition(flightUIModel.getRouteEditBean(), Position.CO_NAVIGATOR)}; } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.jaxx 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.jaxx 2012-08-20 12:12:05 UTC (rev 441) @@ -38,7 +38,6 @@ org.nuiton.validator.bean.list.BeanListValidator org.jdesktop.swingx.JXTable - jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer jaxx.runtime.swing.model.GenericListModel jaxx.runtime.validator.swing.SwingListValidatorMessageTableModel Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -61,7 +61,6 @@ import org.apache.commons.lang3.tuple.Pair; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.Highlighter; -import org.nuiton.util.decorator.DecoratorProvider; import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.list.BeanListValidator; import org.slf4j.Logger; @@ -74,6 +73,7 @@ import javax.swing.JComboBox; import javax.swing.JTable; import javax.swing.JTextField; +import javax.swing.ListCellRenderer; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.border.LineBorder; @@ -132,6 +132,18 @@ public void init() { + SammoaUIContext context = ui.getContextValue(SammoaUIContext.class); + final SammoaDecoratorProvider decoratorProvider = + context.getDecoratorProvider(); + + ListCellRenderer observeCellRenderer = + decoratorProvider.newListCellRender(Observer.class); + + ui.getNavComboBox().setRenderer(observeCellRenderer); + ui.getLeftComboBox().setRenderer(observeCellRenderer); + ui.getRightComboBox().setRenderer(observeCellRenderer); + ui.getConavComboBox().setRenderer(observeCellRenderer); + JTable errorTable = ui.getErrorTable(); SwingListValidatorMessageTableModel errorTableModel = ui.getErrorTableModel(); @@ -142,13 +154,11 @@ private static final long serialVersionUID = 1L; - private SammoaDecoratorProvider decoratorProvider = - SammoaUIContext.getUIContext().getDecoratorProvider(); - @Override protected String decorateBean(Object bean) { return decoratorProvider.getDecorator(bean).toString(bean); } + } ); FlightUIModel flightUIModel = getFlightUIModel(); @@ -572,10 +582,6 @@ } } - public DecoratorProvider getDecoratorProvider() { - return SammoaUIContext.getUIContext().getDecoratorProvider(); - } - public static void init(final JXTable table, ListSelectionListener selectionListener) { @@ -630,7 +636,8 @@ } // NumberCellEditor { - NumberCellEditor<Integer> editor = JAXXWidgetUtil.newNumberTableCellEditor(Integer.class, false); + NumberCellEditor<Integer> editor = + JAXXWidgetUtil.newNumberTableCellEditor(Integer.class, false); editor.getNumberEditor().setSelectAllTextOnError(true); JTextField textField = editor.getNumberEditor().getTextField(); textField.addKeyListener(goNextCellAdapter); Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -101,7 +101,9 @@ JFrame parent = ui.getParentContainer(JFrame.class); - SammoaUtil.openInDialog(ui, parent, _("sammoa.dialog.title.region"), ui.getCloseAction()); + SammoaUtil.openInDialog(ui, parent, + _("sammoa.dialog.title.region"), + ui.getCloseAction()); ui.setVisible(true); } @@ -125,9 +127,8 @@ if (speciesFile != null && speciesFile.exists()) { if (logger.isInfoEnabled()) { - logger.info(String.format("Import species file %s", - speciesFile.getAbsolutePath()) - ); + logger.info("Import species file {}", + speciesFile.getAbsolutePath()); } success = uiImporter.importCvs(speciesImporter, speciesFile); Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.css 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.css 2012-08-20 12:12:05 UTC (rev 441) @@ -27,9 +27,9 @@ text:"sammoa.label.transect.strate"; } -#transectStrateComboBox { +/*#transectStrateComboBox { renderer:{new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())} -} +}*/ #transectNameLabel { text:"sammoa.label.transect.name"; Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.jaxx 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.jaxx 2012-08-20 12:12:05 UTC (rev 441) @@ -31,7 +31,6 @@ fr.ulr.sammoa.ui.swing.action.CloseAction fr.ulr.sammoa.ui.swing.SammoaUIContext - jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer jaxx.runtime.validator.swing.SwingValidatorUtil jaxx.runtime.validator.swing.SwingValidatorMessageTableModel Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java 2012-08-19 18:06:37 UTC (rev 440) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java 2012-08-20 12:12:05 UTC (rev 441) @@ -26,9 +26,8 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import fr.ulr.sammoa.application.ReferentialService; -import fr.ulr.sammoa.application.SammoaContext; +import fr.ulr.sammoa.persistence.Strate; import fr.ulr.sammoa.persistence.Transect; -import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider; import fr.ulr.sammoa.ui.swing.SammoaUIContext; import fr.ulr.sammoa.ui.swing.SammoaUIHandler; import fr.ulr.sammoa.ui.swing.flight.StrateModel; @@ -74,10 +73,6 @@ return ui.getModel(); } - public SammoaDecoratorProvider getDecoratorProvider() { - return context.getDecoratorProvider(); - } - @Override public void beforeInitUI() { @@ -88,6 +83,8 @@ @Override public void afterInitUI() { + ui.getTransectStrateComboBox().setRenderer( + context.getDecoratorProvider().newListCellRender(Strate.class)); SwingValidatorUtil.installUI(ui.getErrorTable(), new SwingValidatorMessageTableRenderer()); }