r471 - in trunk: sammoa-application/src/main/java/fr/ulr/sammoa/application sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence sammoa-persistence/src/test/java/fr/ulr/sammoa/persistence sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util
Author: fdesbois Date: 2012-08-24 19:12:53 +0200 (Fri, 24 Aug 2012) New Revision: 471 Url: http://forge.codelutin.com/repositories/revision/sammoa/471 Log: refs #1204 : - resolve issue with currentRoute selection - resolve issue with new route time Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/BaseFlightController.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerValidation.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/RouteEvent.java trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/GeoPoints.java trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Routes.java trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/TransectFlightImpl.java trunk/sammoa-persistence/src/test/java/fr/ulr/sammoa/persistence/GeoPointsTest.java 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/FlightUIModel.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/util/TableDataChangeListener.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java 2012-08-24 17:12:53 UTC (rev 471) @@ -79,8 +79,8 @@ 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(Route.class, "${routeType}$s ${beginTime}$tH:%2$tM:%2$tS"); + registerJXPathDecorator(Observation.class, "Obs_${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", "##", " - "); Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/BaseFlightController.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/BaseFlightController.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/BaseFlightController.java 2012-08-24 17:12:53 UTC (rev 471) @@ -223,9 +223,10 @@ // Start with TRANSIT route if (logger.isInfoEnabled()) { - logger.info(String.format("Create TRANSIT [START] at %1$tH:%1$tM:%1$tS", currentDate)); + logger.info(String.format("Create TRANSIT [START] at %1$tH:%1$tM:%1$tS.%1$tL", currentDate)); } - currentRoute = service.createTransit(transaction, flight, currentDate, currentRoute); + Route previousRoute = currentRoute; + currentRoute = service.createTransit(transaction, flight, currentDate, previousRoute); // Auto selection of the next transect starting from the begining nextTransect = flight.getNextTransectFlightFrom(null); @@ -237,7 +238,7 @@ startTime = timeLog.log(startTime, "start()", "Commited"); // Fire events after commit - fireRouteAdded(currentRoute); + fireRouteAdded(previousRoute, currentRoute); fireNextTransectChanged(nextTransect); fireStateChanged(state); @@ -363,9 +364,10 @@ // Create new LEG route if (logger.isInfoEnabled()) { - logger.info(String.format("Create LEG [BEGIN] at %1$tH:%1$tM:%1$tS", currentDate)); + logger.info(String.format("Create LEG [BEGIN] at %1$tH:%1$tM:%1$tS.%1$tL", currentDate)); } - currentRoute = service.createLeg(transaction, flight, currentDate, currentRoute, lastTransect); + Route previousRoute = currentRoute; + currentRoute = service.createLeg(transaction, flight, currentDate, previousRoute, lastTransect); // automatic selection of the next transect nextTransect = flight.getNextTransectFlightFrom(lastTransect); @@ -377,7 +379,7 @@ startTime = timeLog.log(startTime, "begin()", "Commited"); // Fire events after commit - fireRouteAdded(currentRoute); + fireRouteAdded(previousRoute, currentRoute); fireNextTransectChanged(nextTransect); fireStateChanged(state); @@ -416,11 +418,11 @@ // Create CIRCLE_BACK if (logger.isInfoEnabled()) { - logger.info(String.format("Create CIRCLE_BACK at %1$tH:%1$tM:%1$tS", currentDate)); + logger.info(String.format("Create CIRCLE_BACK at %1$tH:%1$tM:%1$tS.%1$tL", currentDate)); } + Route previousRoute = currentRoute; + currentRoute = service.createCircleBack(transaction, flight, currentDate, previousRoute, observation); - currentRoute = service.createCircleBack(transaction, flight, currentDate, currentRoute, observation); - nextTransect = lastTransect; state = FlightState.OFF_EFFORT; @@ -430,7 +432,7 @@ startTime = timeLog.log(startTime, "circleBack()", "Commited"); // Fire events after commit - fireRouteAdded(currentRoute); + fireRouteAdded(previousRoute, currentRoute); fireNextTransectChanged(nextTransect); fireStateChanged(state); @@ -464,16 +466,17 @@ // Create new LEG route if (logger.isInfoEnabled()) { - logger.info(String.format("Create LEG [ADD] at %1$tH:%1$tM:%1$tS", currentDate)); + logger.info(String.format("Create LEG [ADD] at %1$tH:%1$tM:%1$tS.%1$tL", currentDate)); } - currentRoute = service.createLeg(transaction, flight, currentDate, currentRoute, lastTransect); + Route previousRoute = currentRoute; + currentRoute = service.createLeg(transaction, flight, currentDate, previousRoute, lastTransect); transaction.commitTransaction(); startTime = timeLog.log(startTime, "add()", "Commited"); // Fire events after commit - fireRouteAdded(currentRoute); + fireRouteAdded(previousRoute, currentRoute); timeLog.log(startTime, "add()", "Fired"); @@ -570,7 +573,7 @@ } if (logger.isInfoEnabled()) { - logger.info(String.format("Create Observation %2$s at %1$tH:%1$tM:%1$tS (observer = %3$s)", + logger.info(String.format("Create Observation %2$s at %1$tH:%1$tM:%1$tS.%1$tL (observer = %3$s)", currentDate, position, observer != null && observer.getObserver() != null @@ -615,16 +618,17 @@ // Create new TRANSIT route if (logger.isInfoEnabled()) { - logger.info(String.format("Create TRANSIT [END] at %1$tH:%1$tM:%1$tS", currentDate)); + logger.info(String.format("Create TRANSIT [END] at %1$tH:%1$tM:%1$tS.%1$tL", currentDate)); } - currentRoute = service.createTransit(transaction, flight, currentDate, currentRoute); + Route previousRoute = currentRoute; + currentRoute = service.createTransit(transaction, flight, currentDate, previousRoute); state = FlightState.OFF_EFFORT; transaction.commitTransaction(); // Fire events after commit - fireRouteAdded(currentRoute); + fireRouteAdded(previousRoute, currentRoute); fireNextTransectChanged(nextTransect); fireStateChanged(state); @@ -657,7 +661,7 @@ Date currentDate = geoPoint.getRecordTime(); if (logger.isInfoEnabled()) { - logger.info(String.format("Stop flight %2$d at %1$tH:%1$tM:%1$tS", + logger.info(String.format("Stop flight %2$d at %1$tH:%1$tM:%1$tS.%1$tL", currentDate, flight.getFlightNumber()) ); @@ -778,16 +782,16 @@ } } - protected void fireRouteAdded(Route newRoute) { + protected void fireRouteAdded(Route previousRoute, Route newRoute) { Preconditions.checkNotNull(newRoute); - RouteEvent event = new RouteEvent(this, newRoute, true); + RouteEvent event = new RouteEvent(this, newRoute, true, previousRoute); for (FlightControllerListener listener : listeners) { listener.onCurrentRouteChanged(event); } } protected void fireCurrentRouteChanged(Route route) { - RouteEvent event = new RouteEvent(this, route, false); + RouteEvent event = new RouteEvent(this, route, false, null); for (FlightControllerListener listener : listeners) { listener.onCurrentRouteChanged(event); } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerValidation.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerValidation.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerValidation.java 2012-08-24 17:12:53 UTC (rev 471) @@ -5,10 +5,12 @@ import fr.ulr.sammoa.application.device.audio.AudioReader; import fr.ulr.sammoa.persistence.Flight; import fr.ulr.sammoa.persistence.GeoPoint; +import fr.ulr.sammoa.persistence.GeoPointImpl; import fr.ulr.sammoa.persistence.GeoPoints; import fr.ulr.sammoa.persistence.Route; import fr.ulr.sammoa.persistence.Routes; import fr.ulr.sammoa.persistence.SammoaDAOHelper; +import fr.ulr.sammoa.persistence.TransectFlight; import org.apache.commons.lang3.time.DateUtils; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; @@ -24,7 +26,8 @@ * * @author fdesbois <florian.desbois@codelutin.com> */ -public class FlightControllerValidation extends BaseFlightController { +public class FlightControllerValidation extends BaseFlightController +implements FlightControllerListener { private static final Logger logger = LoggerFactory.getLogger(FlightControllerValidation.class); @@ -32,6 +35,8 @@ protected List<GeoPoint> geoPoints; + protected List<Route> routes; + @Override public <T extends DeviceManager> void openDeviceManager(Class<T> deviceManager) { getDeviceManagerProvider().openDeviceManager(deviceManager, false); @@ -45,9 +50,12 @@ super.init(flight); + addFlightControllerListener(this); + initCurrentRoute(null); geoPoints = service.getFlightGeoPoints(flight); + routes = service.getRoutes(flight); } @Override @@ -68,38 +76,102 @@ Preconditions.checkNotNull(currentRoute, "You must set the current route to retrieve location"); Preconditions.checkState(!geoPoints.isEmpty(), "No geoPoints available"); - Date time = currentRoute.getBeginTime(); + GeoPoint result; + Date previousTime = currentRoute.getBeginTime(); + + if (logger.isDebugEnabled()) { + logger.debug(String.format("Get location after previousTime %1$tH:%1$tM:%1$tS.%1$tL", + previousTime) + ); + } + long position = audioReader.getPosition(); + + Date newTime; if (position > 0) { - time = DateUtils.addMilliseconds(time, (int) position); - // Allow creating any route after a LEG with different time - // to avoid constraints error (naturalId = routeType + flight + beginTime) - } else if (Routes.isRouteLeg(currentRoute)) { - time = DateUtils.addMilliseconds(time, 1); + newTime = DateUtils.addMilliseconds(previousTime, (int) position); + + } else { + + // Arbitrary add 1 second for the newTime + newTime = DateUtils.addMilliseconds(previousTime, 1000); + + // Ensure that newTime is before nextRoute time + Route nextRoute = Routes.findNext(routes, currentRoute); + if (nextRoute != null) { + + logger.debug(String.format("Next route %1$s at %2$tH:%2$tM:%2$tS.%2$tL", + nextRoute.getRouteType(), + nextRoute.getBeginTime()) + ); + + // If greater or equals than the nextRoute, we use the middle + // time between previous and next route + if (newTime.after(nextRoute.getBeginTime()) + || newTime.equals(nextRoute.getBeginTime())) { + + newTime = Routes.getMiddleTime(currentRoute, nextRoute); + } + } } - int index = GeoPoints.getClosestPointIndex(geoPoints, time); + if (logger.isDebugEnabled()) { + logger.debug(String.format("Get location at newTime %1$tH:%1$tM:%1$tS.%1$tL", + newTime) + ); + } - GeoPoint result = geoPoints.get(index); + // Retrieve the appropriate location + GeoPoint location = GeoPoints.getClosestPoint(geoPoints, newTime); - // Maybe a problem when using same time for previous/next searches - // Note that the captureDelay is keeped but maybe we need to update it - // depends on modified time ? + // Create a new location if no one is available for the newTime + if (!location.getRecordTime().equals(newTime)) { - // Create a new entity for the new time - if (!result.getRecordTime().equals(time)) { + // Note that the captureDelay is keeped but maybe we need to update it + // depends on modified time ? + result = new GeoPointImpl(location.getLatitude(), location.getLongitude()); + result.setSpeed(location.getSpeed()); + result.setAltitude(location.getAltitude()); + result.setCaptureDelay(location.getCaptureDelay()); + result.setFlight(flight); + result.setRecordTime(newTime); + SammoaDAOHelper.getGeoPointDAO(tx).create(result); + geoPoints.add(result); - GeoPoint newPoint = GeoPoints.copy(result); - newPoint.setRecordTime(time); - SammoaDAOHelper.getGeoPointDAO(tx).create(newPoint); - geoPoints.add(index, newPoint); - if (logger.isDebugEnabled()) { - logger.debug("Create a new GeoPoint : {}", newPoint); + logger.debug("Create a new GeoPoint : {}", result); } + + } else { + result = location; } return result; } + + @Override + public void onCurrentRouteChanged(RouteEvent event) { + if (event.isNew()) { + if (logger.isDebugEnabled()) { + logger.debug("Add route {} to cache", Routes.toString(event.getRoute())); + } + routes.add(event.getRoute()); + } + } + + @Override + public void onNextTransectChanged(TransectFlight nextTransect) { + // nothing to do + } + + @Override + public void onStateChanged(FlightState state) { + // nothing to do + } + + @Override + public void onObservationAdded(ObservationEvent event) { + // nothing to do + } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/RouteEvent.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/RouteEvent.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/RouteEvent.java 2012-08-24 17:12:53 UTC (rev 471) @@ -38,12 +38,16 @@ protected boolean isNew; + protected Route previousRoute; + public RouteEvent(FlightController source, Route route, - boolean isNew) { + boolean isNew, + Route previousRoute) { this.source = source; this.route = route; this.isNew = isNew; + this.previousRoute = previousRoute; } public FlightController getSource() { @@ -57,4 +61,8 @@ public boolean isNew() { return isNew; } + + public Route getPreviousRoute() { + return previousRoute; + } } Modified: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/GeoPoints.java =================================================================== --- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/GeoPoints.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/GeoPoints.java 2012-08-24 17:12:53 UTC (rev 471) @@ -31,6 +31,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Ordering; +import java.util.Comparator; import java.util.Date; import java.util.List; @@ -47,15 +48,6 @@ // static class do not have instanciation } - public static GeoPoint copy(GeoPoint source) { - GeoPoint result = new GeoPointImpl(source.getLatitude(), source.getLongitude()); - result.setFlight(source.getFlight()); - result.setSpeed(source.getSpeed()); - result.setAltitude(source.getAltitude()); - result.setCaptureDelay(source.getCaptureDelay()); - return result; - } - public static boolean equal(GeoPoint geoPoint1, GeoPoint geoPoint2) { boolean result = geoPoint1 == null && geoPoint2 == null; @@ -90,24 +82,21 @@ return TO_DATE_FUNCTION; } - /** - * @param geoPoints - * @param dates - * @return - * @deprecated useless method since GPS save same points at exact observation or route time - */ - @Deprecated + public static Comparator<GeoPoint> orderByDate() { + return BY_DATE_COMPARATOR; + } + public static List<GeoPoint> getClosestPoints(List<GeoPoint> geoPoints, Iterable<Date> dates) { List<GeoPoint> result = Lists.newArrayList(); if (!geoPoints.isEmpty()) { - List<Date> geoPointDates = FluentIterable - .from(geoPoints) - .transform(toDate()) - .toSortedImmutableList(Ordering.natural()); + List<GeoPoint> source = + Ordering.from(orderByDate()).sortedCopy(geoPoints); + List<Date> geoPointDates = Lists.transform(source, toDate()); + int index = 0; for (Date date : dates) { @@ -120,18 +109,19 @@ return result; } - public static int getClosestPointIndex(List<GeoPoint> geoPoints, Date date) { + public static GeoPoint getClosestPoint(List<GeoPoint> geoPoints, Date date) { - int result = -1; + GeoPoint result = null; if (!geoPoints.isEmpty()) { - List<Date> geoPointDates = FluentIterable - .from(geoPoints) - .transform(toDate()) - .toSortedImmutableList(Ordering.natural()); + List<GeoPoint> source = + Ordering.from(orderByDate()).sortedCopy(geoPoints); - result = getClosestDateIndex(0, geoPointDates, date); + List<Date> geoPointDates = Lists.transform(source, toDate()); + + int index = getClosestDateIndex(0, geoPointDates, date); + result = geoPoints.get(index); } return result; } @@ -171,7 +161,7 @@ return size - 1; } - protected static Function<GeoPoint, Date> TO_DATE_FUNCTION = new Function<GeoPoint, Date>() { + private static Function<GeoPoint, Date> TO_DATE_FUNCTION = new Function<GeoPoint, Date>() { @Override public Date apply(GeoPoint input) { @@ -179,9 +169,17 @@ } }; - protected static Predicate<GeoPoint> IS_COORDINATES_EMPTY_PREDICATE = new Predicate<GeoPoint>() { + private static Comparator<GeoPoint> BY_DATE_COMPARATOR = new Comparator<GeoPoint>() { @Override + public int compare(GeoPoint o1, GeoPoint o2) { + return o1.getRecordTime().compareTo(o2.getRecordTime()); + } + }; + + private static Predicate<GeoPoint> IS_COORDINATES_EMPTY_PREDICATE = new Predicate<GeoPoint>() { + + @Override public boolean apply(GeoPoint input) { return isCoordinatesEmpty(input); } Modified: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Routes.java =================================================================== --- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Routes.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Routes.java 2012-08-24 17:12:53 UTC (rev 471) @@ -156,6 +156,15 @@ return getNext(routes, route, orderByDate()); } + public static Date getMiddleTime(Route previousRoute, Route nextRoute) { + Date previousTime = previousRoute.getBeginTime(); + Date nextTime = nextRoute.getBeginTime(); + + long diff = nextTime.getTime() - previousTime.getTime(); + Date result = new Date(nextTime.getTime() - diff / 2); + return result; + } + public static Predicate<Route> isDeleted() { return IS_DELETED_PREDICATE; } Modified: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/TransectFlightImpl.java =================================================================== --- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/TransectFlightImpl.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/TransectFlightImpl.java 2012-08-24 17:12:53 UTC (rev 471) @@ -74,6 +74,16 @@ } @Override + public int getIndexInFlight() { + return 0; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void setIndexInFlight(int indexInFlight) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override public void setObserverByPosition(Position position, Observer observer) { ObserverPosition observerPositionToUpdate = getObserverPositionByPosition(position); Modified: trunk/sammoa-persistence/src/test/java/fr/ulr/sammoa/persistence/GeoPointsTest.java =================================================================== --- trunk/sammoa-persistence/src/test/java/fr/ulr/sammoa/persistence/GeoPointsTest.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-persistence/src/test/java/fr/ulr/sammoa/persistence/GeoPointsTest.java 2012-08-24 17:12:53 UTC (rev 471) @@ -42,7 +42,7 @@ List<GeoPoint> geoPoints = Lists.newArrayList(); - for (int i = 0; i < 100; i++) { + for (int i = 0; i < 100000; i++) { GeoPoint geoPoint = new GeoPointImpl(); geoPoint.setRecordTime(new Date(i * 1000)); 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-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java 2012-08-24 17:12:53 UTC (rev 471) @@ -553,7 +553,15 @@ getModel().setCurrentRoute(route); if (event.isNew()) { - getModel().addRoute(route); + + Route previousRoute = event.getPreviousRoute(); + if (previousRoute != null) { + int previousIndex = getModel().indexOfRoutes(previousRoute); + getModel().addRoute(previousIndex + 1, route); + + } else { + getModel().addRoute(route); + } } } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIModel.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIModel.java 2012-08-24 17:12:53 UTC (rev 471) @@ -250,7 +250,11 @@ public void addRoute(Route route) { int index = sizeRoutes(); - getRoutes().add(route); + addRoute(index, route); + } + + public void addRoute(int index, Route route) { + getRoutes().add(index, route); fireIndexedPropertyChange(PROPERTY_ROUTES, index, null, route); } 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-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css 2012-08-24 17:12:53 UTC (rev 471) @@ -38,6 +38,7 @@ cellSelectionEnabled:false; selectionMode:0; model:{errorTableModel}; + sortable:false; } #transecLbl { 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-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.jaxx 2012-08-24 17:12:53 UTC (rev 471) @@ -174,7 +174,7 @@ <JScrollPane id='scrollPanel' constraints='BorderLayout.CENTER'> - <JTable id='errorTable'/> + <JXTable id='errorTable'/> </JScrollPane> </JPanel> 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-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java 2012-08-24 17:12:53 UTC (rev 471) @@ -213,6 +213,11 @@ if (logger.isInfoEnabled()) { logger.info("Select route from index {}", newSelectedRow); } + + if (context.isValidationMode()) { + getParentUI().getHandler().getFlightController().setCurrentRoute(route); + } + } else { if (logger.isInfoEnabled()) { logger.info("No route selected"); @@ -277,22 +282,6 @@ SammoaColors.ROUTE_NO_MODIFICATION_ROW_COLOR) ); - if (context.isValidationMode()) { - - dataTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - - @Override - public void valueChanged(ListSelectionEvent e) { - if (!e.getValueIsAdjusting()) { - int index = SammoaUtil.getLastSelectedRow(ui.getRouteTable()); - Route route = ui.getRouteTableModel().getRow(index); - getParentUI().getHandler().getFlightController().setCurrentRoute(route); - } - } - }); - } - - RouteValidatorDataLocator dataLocator = new RouteValidatorDataLocator(); SwingValidatorUtil.registerListValidator( Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/TableDataChangeListener.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/TableDataChangeListener.java 2012-08-24 17:12:30 UTC (rev 470) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/TableDataChangeListener.java 2012-08-24 17:12:53 UTC (rev 471) @@ -53,13 +53,12 @@ public void propertyChange(PropertyChangeEvent evt) { if (evt instanceof IndexedPropertyChangeEvent) { - int rowIndex = ((IndexedPropertyChangeEvent) evt).getIndex(); + final int rowIndex = ((IndexedPropertyChangeEvent) evt).getIndex(); Object oldValue = evt.getOldValue(); Object newValue = evt.getNewValue(); if (oldValue == null) { tableModel.fireTableRowsInserted(rowIndex, rowIndex); - table.scrollRowToVisible(rowIndex); int columnIndex = getFirstEditableColumn(rowIndex); if (columnIndex != NO_COLUMN_INDEX_TO_EDIT_ON_INSERT) {
participants (1)
-
fdesbois@users.forge.codelutin.com