Author: fdesbois Date: 2012-08-29 16:43:17 +0200 (Wed, 29 Aug 2012) New Revision: 491 Url: http://forge.codelutin.com/repositories/revision/sammoa/491 Log: fixes #1418 : change link between observation and position Added: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Position.java Removed: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ForceSelectionSelectionModel.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/BaseFlightController.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Observations.java trunk/sammoa-persistence/src/main/xmi/sammoa.zargo trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.css 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/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/observations/ObservationTableModel.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/RouteTableModel.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/TableDataChangeListener.java trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/DecoratorService.java 2012-08-29 14:43:17 UTC (rev 491) @@ -27,6 +27,7 @@ import fr.ulr.sammoa.persistence.Flight; import fr.ulr.sammoa.persistence.Observation; import fr.ulr.sammoa.persistence.Observer; +import fr.ulr.sammoa.persistence.Position; import fr.ulr.sammoa.persistence.Region; import fr.ulr.sammoa.persistence.Route; import fr.ulr.sammoa.persistence.RouteType; @@ -124,6 +125,15 @@ return result; } }); + + registerDecorator(new Decorator<Position>(Position.class) { + + @Override + public String toString(Object bean) { + Position position = (Position) bean; + return _(position.getLabel()); + } + }); } }; } 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-29 14:43:17 UTC (rev 491) @@ -42,7 +42,6 @@ import fr.ulr.sammoa.persistence.Observation; import fr.ulr.sammoa.persistence.ObservationDAO; import fr.ulr.sammoa.persistence.ObservationStatus; -import fr.ulr.sammoa.persistence.Observations; import fr.ulr.sammoa.persistence.Observer; import fr.ulr.sammoa.persistence.ObserverPosition; import fr.ulr.sammoa.persistence.ObserverPositionDAO; @@ -352,7 +351,7 @@ // delete observations List<Observation> observations = getObservations(tx, flight); // keep observerPositions to delete - positions.addAll(Observations.toObserverPositions(observations)); +// positions.addAll(Observations.toObserverPositions(observations)); ObservationDAO observationDAO = SammoaDAOHelper.getObservationDAO(tx); observationDAO.deleteAll(observations); @@ -750,7 +749,7 @@ public Observation createObservation(TopiaContext transaction, Flight flight, Date beginTime, - ObserverPosition observer) + Position position) throws TopiaException { Observation result; @@ -761,7 +760,7 @@ result = dao.createByNaturalId(number, flight); result.setObservationTime(beginTime); - result.setObserverPosition(observer); + result.setPosition(position); result.setObservationStatus(ObservationStatus.NEW); return result; 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/BaseFlightController.java 2012-08-29 14:43:17 UTC (rev 491) @@ -39,7 +39,6 @@ import fr.ulr.sammoa.persistence.Observation; import fr.ulr.sammoa.persistence.ObservationDAO; import fr.ulr.sammoa.persistence.ObservationStatus; -import fr.ulr.sammoa.persistence.ObserverPosition; import fr.ulr.sammoa.persistence.Position; import fr.ulr.sammoa.persistence.Route; import fr.ulr.sammoa.persistence.RouteType; @@ -488,48 +487,6 @@ } } - public void insert(RouteType routeType) { - - switch (routeType) { - case LEG: - - if (currentRoute != null) { - - switch (currentRoute.getRouteType()) { - case LEG: - add(); - break; - - case CIRCLE_BACK: - case TRANSIT: - begin(); - break; - - default: - } - } - break; - - case TRANSIT: - - if (currentRoute != null) { - - switch (currentRoute.getRouteType()) { - case LEG: - end(); - break; - - case CIRCLE_BACK: - case TRANSIT: - default: - } - } - break; - - default: - } - } - @Override public void next() { @@ -562,25 +519,23 @@ Date currentDate = geoPoint.getRecordTime(); - ObserverPosition observer; - if (currentRoute == null) { +// ObserverPosition observer; +// if (currentRoute == null) { +// +// // problem we don't have any observerPosition +// observer = null; +// +// } else { +// observer = currentRoute.getObserverPositionByPosition(position); +// } - // problem we don't have any observerPosition - observer = null; - - } else { - observer = currentRoute.getObserverPositionByPosition(position); - } - if (logger.isInfoEnabled()) { - logger.info(String.format("Create Observation %2$s at %1$tH:%1$tM:%1$tS.%1$tL (observer = %3$s)", + logger.info(String.format("Create Observation %2$s at %1$tH:%1$tM:%1$tS.%1$tL", currentDate, - position, - observer != null && observer.getObserver() != null - ? observer.getObserver().getInitials() : "") + position) ); } - Observation observation = service.createObservation(transaction, flight, currentDate, observer); + Observation observation = service.createObservation(transaction, flight, currentDate, position); transaction.commitTransaction(); Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java 2012-08-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java 2012-08-29 14:43:17 UTC (rev 491) @@ -39,6 +39,7 @@ import fr.ulr.sammoa.persistence.GeoPoints; import fr.ulr.sammoa.persistence.Observation; import fr.ulr.sammoa.persistence.Observations; +import fr.ulr.sammoa.persistence.Observer; import fr.ulr.sammoa.persistence.ObserverPosition; import fr.ulr.sammoa.persistence.Position; import fr.ulr.sammoa.persistence.Region; @@ -521,13 +522,17 @@ record.put("SWIM_DIR", observation.getSwimDir()); record.put("CALVES", observation.getCalves()); record.put("PHOTO", observation.isPhoto()); - ObserverPosition observerPosition = observation.getObserverPosition(); + + ObserverPosition observerPosition = + route.getObserverPositionByPosition(observation.getPosition()); if (observerPosition != null) { - if (observerPosition.getObserver() == null) { - record.put("OBSERVER", observerPosition.getObserver().getInitials()); + Observer observer = observerPosition.getObserver(); + if (observer != null) { + record.put("OBSERVER", observer.getInitials()); } - record.put("SIDE", observerPosition.getPosition()); } + + record.put("SIDE", observation.getPosition()); record.put("STATUS", observation.getObservationStatus()); record.put("COMMENT", observation.getComment()); 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties 2012-08-29 14:43:17 UTC (rev 491) @@ -15,6 +15,7 @@ sammoa.config.gps.handler=GpsHandler class \: fr.ulr.sammoa.application.device.gps.GpsHandlerGpylon or fr.ulr.sammoa.application.device.gps.FakeGpsHandler sammoa.config.gps.speed=GPS speed for capture sammoa.config.gps.timeout=Time in seconds before GPS going to timeout (always the same data is received for this laps of time) and return error +sammoa.config.license.organizationName= sammoa.config.log.file=Path for application log file sammoa.config.system.id=Id of the default system to use sammoa.config.tmp.directory=Temporary directory used for different task (import, export,...) @@ -38,3 +39,9 @@ sammoa.flight.decorator.newFlight=New flight sammoa.flight.decorator.notEnded=not ended sammoa.flight.decorator.notStarted=not started +sammoa.position.backLeft=LEFT +sammoa.position.backRight=RIGHT +sammoa.position.coNavigator=CENTER +sammoa.position.frontLeft=LEFT +sammoa.position.frontRight=RIGHT +sammoa.position.navigator=CENTER Modified: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Observations.java =================================================================== --- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Observations.java 2012-08-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Observations.java 2012-08-29 14:43:17 UTC (rev 491) @@ -26,11 +26,9 @@ import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; import org.apache.commons.collections.CollectionUtils; -import org.nuiton.util.DateUtil; import org.nuiton.util.PeriodDates; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +36,6 @@ import java.util.Date; import java.util.Iterator; import java.util.List; -import java.util.Set; /** * Created: 16/07/12 @@ -58,35 +55,12 @@ return Iterables.transform(observations, TO_DATE_FUNCTION); } - public static Set<ObserverPosition> toObserverPositions(Iterable<Observation> observations) { - return Sets.newHashSet(Iterables.transform(observations, TO_OBSERVER_POSITION_FUNCTION)); - } - public static Iterable<Observation> filterInRoute(Iterable<Observation> observations, Route route, Iterable<Route> routes, boolean ignoreDeleted) { return Iterables.filter(observations, inRoute(route, routes, ignoreDeleted)); } -// -// public static Observation findFirstInRoute(Iterable<Observation> observations, -// Route route, -// Iterable<Route> routes, -// boolean ignoreDeleted) { -// -// Observation result; -// if (route == null) { -// result = null; -// -// } else { -// -// result = FluentIterable.from(observations) -// .filter(inRoute(route, routes, ignoreDeleted)) -// .first() -// .orNull(); -// } -// return result; -// } public static boolean inRoute(Observation observation, Route route, @@ -121,13 +95,9 @@ Date begin = previousRoute.getBeginTime(); Date end = nextRoute != null ? nextRoute.getBeginTime() : null; - boolean result = - DateUtil.between(observation.getObservationTime(), begin, end); + PeriodDates period = new PeriodDates(begin, end); - // Max bound exclusive - result &= !observation.getObservationTime().equals(end); - - return result; + return inPeriod(observation, period); } public static Predicate<Observation> inRoute(Route route, @@ -136,6 +106,24 @@ return new InRoutePredicate(route, routes, ignoreDeleted); } + public static boolean inPeriod(Observation observation, PeriodDates periodDate) { + + Date thruDate = periodDate.getThruDate(); + + boolean result; + if (thruDate == null) { + result = periodDate.afterBegin(observation.getObservationTime()); + } else { + result = periodDate.between(observation.getObservationTime()) + && !thruDate.equals(observation.getObservationTime()); + } + return result; + } + + public static Predicate<Observation> inPeriod(PeriodDates periodDate) { + return new InPeriodPredicate(periodDate); + } + public static void removeOtherSpecies(List<Observation> observations, List<Species> species) { if (CollectionUtils.isNotEmpty(species)) { @@ -154,29 +142,37 @@ public static List<Observation> retainsObservations(List<Observation> observations, PeriodDates periodDate) { - List<Observation> result = Lists.newArrayList(); - Iterator<Observation> itr = observations.iterator(); - if (periodDate.getThruDate() == null) { - Date fromDate = periodDate.getFromDate(); - // no up bound - while (itr.hasNext()) { - Observation observation = itr.next(); - Date observationTime = observation.getObservationTime(); - if (fromDate.before(observationTime)) { - itr.remove(); - result.add(observation); - } - } - } else { - while (itr.hasNext()) { - Observation observation = itr.next(); - Date observationTime = observation.getObservationTime(); - if (periodDate.between(observationTime)) { - itr.remove(); - result.add(observation); - } - } - } +// List<Observation> result = Lists.newArrayList(); +// Iterator<Observation> itr = observations.iterator(); +// if (periodDate.getThruDate() == null) { +// Date fromDate = periodDate.getFromDate(); +// // no up bound +// while (itr.hasNext()) { +// Observation observation = itr.next(); +// Date observationTime = observation.getObservationTime(); +// if (fromDate.before(observationTime) || fromDate.equals(observationTime)) { +// itr.remove(); +// result.add(observation); +// } +// } +// } else { +// while (itr.hasNext()) { +// Observation observation = itr.next(); +// Date observationTime = observation.getObservationTime(); +// if (periodDate.between(observationTime) && !periodDate.getThruDate().equals(observationTime)) { +// itr.remove(); +// result.add(observation); +// } +// } +// } + + List<Observation> result = FluentIterable + .from(observations) + .filter(inPeriod(periodDate)) + .toImmutableList(); + + Iterables.removeAll(observations, result); + return result; } @@ -188,14 +184,6 @@ } }; - private static Function<Observation, ObserverPosition> TO_OBSERVER_POSITION_FUNCTION = new Function<Observation, ObserverPosition>() { - - @Override - public ObserverPosition apply(Observation input) { - return input.getObserverPosition(); - } - }; - private static class InRoutePredicate implements Predicate<Observation> { protected Route route; @@ -220,4 +208,19 @@ } } + private static class InPeriodPredicate implements Predicate<Observation> { + + protected PeriodDates periodDate; + + public InPeriodPredicate(PeriodDates periodDate) { + Preconditions.checkNotNull(periodDate); + this.periodDate = periodDate; + } + + @Override + public boolean apply(Observation input) { + return Observations.inPeriod(input, periodDate); + } + } + } Added: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Position.java =================================================================== --- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Position.java (rev 0) +++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Position.java 2012-08-29 14:43:17 UTC (rev 491) @@ -0,0 +1,33 @@ +package fr.ulr.sammoa.persistence; + +import static org.nuiton.i18n.I18n.n_; + +/** + * Created: 29/08/12 + * + * @author fdesbois <florian.desbois@codelutin.com> + */ +public enum Position { + + NAVIGATOR(n_("sammoa.position.navigator")), + + FRONT_LEFT(n_("sammoa.position.frontLeft")), + + FRONT_RIGHT(n_("sammoa.position.frontRight")), + + BACK_LEFT(n_("sammoa.position.backLeft")), + + BACK_RIGHT(n_("sammoa.position.backRight")), + + CO_NAVIGATOR(n_("sammoa.position.coNavigator")); + + private String label; + + private Position(String label) { + this.label = label; + } + + public String getLabel() { + return label; + } +} Property changes on: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Position.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/sammoa-persistence/src/main/xmi/sammoa.zargo =================================================================== --- trunk/sammoa-persistence/src/main/xmi/sammoa.zargo 2012-08-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-persistence/src/main/xmi/sammoa.zargo 2012-08-29 14:43:17 UTC (rev 491) @@ -1,90 +1,99 @@ -PK;cAsammoa.argo�TK��0�ﯰr��l�B��.�bϕO���8��zƱ�8}����JQ5��y�̔\7��@T�*{�Uw��Bծ��rK�G�ζJ����,#e��(Ot�#T���weq�'���)c�(��+ +PKhiAsammoa.argo�TK��0�ﯰr��l�B��.�bϕO���8��zƱ�8}����JQ5��y�̔\7��@T�*{�Uw��Bծ��rK�G�ζJ����,#e��(Ot�#T���weq�'���)c�(��+ X�}c��^N�q�������)��V�7J _���\(�9��@�PJ�= ����j�V�����N���%�C�H�N��I����L<�'9�h���R���Vh��I�Ijì�`O���A4��^�I��*p�����G[N�i�P�= �V�Ch��(`�5��18��!F��NݹU�'��nP5eq&��/�����<��-�����휈3F��@ o4�|T���jIm�&o�g&���v�e���*�����LJ��OO+FM݆4F �2j�-J�☆��y��E�uT�Ge�y��g��}䞽~nh:�B�ӝ�7�_���3 -V��M�w��d����o�zm�j�4�s�%�Ts�m�����}I�gi�q{�qi�����Xҳ��^[7L��2���ճ-��wc�UY%�]<�q��d�h�����G<1�hx����7PK��DH�PK;cAsammoa_Diagrammedeclasses.pgml�]��8r�?O���VRe�!@$g��:+�e��dkkkJG�9֮$���3N��y���D�F�IAERɸ�IэF���?����t�5\,'���t���Q4�̟^������b��7���/7�����v���o�������^����/���p9ZL�W�Ӣ���p���E����i1�],W��d��r�X�V�Ex��\��˻��p���\�?{��W���+愈1��\��w��W��8?8��g��w��3���/�Ϛ�|X�Q��p��7������y{������X�)���1��9��?��r����p��/���a�~N���U��շ��/����Ώ�s����rw!z��p�ZL֫P�:�E���[�X����t�"�}M����q�����g>�蟡x���-����Oo��z^L�W��o�K�|�G���i -o�"}'�~�1����w9����>����K8y���#G���OO��yr������?V���4p$�jG�� ���T�S6�� ����h�J�f=����������d��|��c���������w�X/W���h���p�W���7���|���O��wn�T��"}�(�I��J�����\(Q"�4���lE���U��L/�ཽ�^"�&R[��+|!�[� -�֨i�f��w���fn�x�z�>��*k�ٚ�w���˟Ysd�(�f9,�D���4]��ǿ��������'I���h�)�ש6��LL�����L�Z���֔��\.�-�:�=��m�a���0wUŐR�<�PR��߿LVaMy��.�T��'�`�h�vy>�R��9�a����IT)F�q ��]��4�?��p�o�5?.�"� =�ň���b�_p�I1�A-��"���%x������ -G�� N�]�q��+�����]��i4N�a��!���p^��_����%���'�p�1��W�x%x����Ûd��LFo������*| -��)�Y�T&�t����R��~��(؞�1��Q���1j@�`i�/,p�*k&��1��c�s�w�1!��fƄ����1!$ń8������v�5����bB���G��;����=,�!k!��D�#B�Ix:i!a}j+��!�E���M�'"������Qf�7�JDv#B -����0�uUè!M&9H0���s�!�AH�՟G����x��A:�n�_)���giq!y�{ZJ�Ec�Jl���E�:�:X�]�v���;X�n�T,� B]̍s�db����v��m����po=�X|����6���c��7���ï�/��e6�߂%K���8ʪ¾��ܓ�p��p�#�Y������#��型B��[�į"��� ʬ�]DI:͎5���J�ujZ�M�`���tzNj����`����n�� +V��M�w��d����o�zm�j�4�s�%�Ts�m�����}I�gi�q{�qi�����Xҳ��^[7L��2���ճ-��wc�UY%�]<�q��d�h�����G<1�hx����7PK��DH�PKhiAsammoa_Diagrammedeclasses.pgml�]m��6���_�*{B� &����s�c����m��R�k�����[���w�;��H��lR�D��nR�D���F���t����q6�.��h���p� +��(O����rw��=����^�������}�<=�>�����σg�.ƫ�3~E��8\�ӧU�h�p1\<Dk~Q��x:|X/���j:�m�Z�G��"�XO/~����l�\^o���������sB�y��\/&s���q���<��A��W϶�z��������w��5/��i{������X�)�~�=��9��S��#��O��N���Y�j2�-���pF�oO�_������p1�����B�����j��ޯW��u:�/�p��[���!��l�"�y͢ūg�q�����g>���P�a������p�{�����O����*���{鏛��h5�?�B�\����W�8��?}�/w��?����uw�| �_V|�(��2���i�3On0�~;�U��J8���Sm�H8A�j�v��=�#6}?��d�̢��w��p6�z������h6V������3���z��N���f9]�s.��_�-��%�/����B�.ˋ�Q��ܬ����Z�?�/J�,J/��?��O�����U��L/�ཽ�^"/(mImU���%K�&�&)���w���fn�x��~�NU]k�ٚ����?� +�Y��Uh^��+��_f�����շ�<�?����}�4_��T�u�L�����L�Z���֔��\.�-�*z|.V�����������*����.J�a��/�UXs=�kR�]��`�h�vyNV�n���0�����AT)F�q ����.�{�V_8��њJwK��b��ip��o8�q��Kg�� +x��]�� +����J'��Y�8�� +x�%x{��Y��, +gW�0��E�p8/E�� ���g �����c��O�R����މ������O_����q�'��|>���g����Q�&�t����R��~��(؞�1��Q�+;�cԀ�V���� ��*2��g��P�{�s�9ۘ�N3cB�~����bBSQ�ppz;��~LI1����#m�� }^qq�"B�ZD���dI"�!�$<���� ���6="������#B�D��R�5���X��nDh�av��z]�0j@H[�$ؚ��s�!�AH�՟G����x��A:�n�_)���giq!y�{ZJ�Ec���N���n�~,Ȯ�e�u��,g�u�}!B]̍s�d�h��|���_�po}�X����6���c��7���ï-��A�2�o���%W�CeUa��!�$$\,9\��e��j#�ԑw��rǗB��[�į"Y��Գ�vW�Yhv��]D)���$�M�`���tzNj����`����n�� ��>� -��_b`�A�V�V���V�xv(�g�lT�.�FڙI:�Rr���c"�� \��|_�������8�-�������ץP�eP�s=�"ԟ�}�x[ -4)�D�3�]�և�����X#�CK�F|-=� ֈU����-bɥu�����2H�Tw��ieڣJ�p��F�dͤ�� �҇,��b^G�9��j=�Z��jߧ�d��Å����h��ʄ�x���b��ÿy�C��������؏�Wь����}���IJl.-X�s���~�� -c]��@�/Þ�Gvϵs�s�\��<\XYh�'z.��# -�6���e�1}!��%����z��<�w��v8̯K1w�`^r�����v>��ϣ��EO?��>i(��Y�7�J�eȑ_s�P̏����Gn�%���?��@0�����PO�#��..�_��i��5� ->�f} -W��^ž:���QZa��<��i��7pL8 -%�e� ,P���&�t�ӈ�HB�ep�> u2�� %2!]�iPO;��4J�_|G^����lr{FG�BG���i���aW -��>��臇e����R%�D&�C<���;�10������ >����){X��vT���{�+���^s.UC����w�}.:��袢f�|EMQ��Hl3�_�&[��$�jщ�82c��A14�r� (1���M�r�蜵�Ĉ����z�.����G�qwM��w3�q�\�B��3®��eة!��.���?�����m,y֣-�=G������m�x��-�=|&�4� -���Y��Բ��W�g�sփ-��~~�D�r�rc��r������j�h˜�h��d8���~�nTx|�u�z�EC�K���Y� ��MϘ{�.%��bL�%^x���z�Ŀ,��å��[feBhk��p�@p�J�k�w�6 -p�Z�t~9�]��f����e1������m+��u��cd����F�8_f���7�䣇���� -��c��/=�)P��g�g�J1|סҸ�.C5��}&A���rR���"��5ĒI-�6_��;_����ڜj!|a}�+�Rf�i�V�mT��ן4���d`"(��J�|Y_{N����D�x�.�9��ZF�櫂�A -�C`�y�p>�����=��A�ȉ��y�����O��}�E�5�M�z�E��>}x�ۻۻ�r���5�M��z�u�?������&�`����`�`_]^�l]�b�=�u� 5lY�b����P�l밾��qw�ڢgV6��,�$S۪k61�}�,'쟟���fU!4�H�"]?�� U��_(�KO�|��nP�-���p)U��z|��$,�TP:4��[e���t3��9UL��?�ƭ՛�:�n$U}��� ->�5g,�<ƅ&}b�[���I�7Ӝ���T��i�6)��i�����3��ɨb�V�Ӂ7�����Cf7�j�]��.8��Su~�E��ji�,�$���!��L��֞Gw�W�����4g��83�+z�%�Մ�I��qy�`��d5ȱ���C^���4Ǭ�8�,�E��`h��CN -���$Z�yi5��~�,|=�x��U8�C�.^1�A��������o��������ɘ@�VLK��7E�{��ܶp:���u��}������\�L��x� �����+ -S8��_����~�NC���ϢƠ~�x8���~(��'Qcd�\�i:\����I���������o����,ڷ�U�.�1/>���zM=��ï�n/��C�1��G]C�nͪ����o*�ԣ.�>>F�UZ�|��7�m2�a:��<�F��u��T -�rr@�T����_c -�d�Ug�fr��V)t������/:������ʩ����#� �D��CM�8T��e�g����q4r�ˁOY��*k�@��'��Tx!ȸ����Mu�n����;&�ΓxvX*^8Z����nS�<\@�=k�;W�b�4���J�r�O��a��E���pOs(w�F��?��r��Γ(w��&Z곮��M���R�6څx[�b+����ʸ��Tx�$����ț�_��ٵI���Qi�����խ������&��#P6�5��o�hzu+�i��WYٲ}�@Cs�t'R����Ko*�#���S�F��ps�+@�>��A�n7�1s��A��9h�m7�����\�`���A��[� -�7�7��j�I�����:��/\�syPv9��h�S���'}DW|�jK�ff�_g�T���3ޗ;����,�5=�fG�cV! -$o�/�ս�Y�[UH��l�|��5���M|����_�f�T- 4����4��EvJsj����d�������(j�oP��jڪ�2���h���h[�G�O��NxM"��Ly�⣁��^��f��� -���1,�#���5ȍ}�z��� -ܺ5��5̍��z��'�ِ/��z�� -_��ycK�y����&����F�快��j�K��� -ެoSQ -��-RZTT`����(gT�^��Q�P��fS��i��!g�rW ��RT�H��-(���^��'#\gF�����Wk_��u&z��3��@���9�\E�q�W��9�f\�E�>����8����N���p�90^���A��_�����S|Oۆ�)]FN���A���p2��ʮ�ys-�i_�F��Z�1aE��ƧncJ7���E�:lc -kM����ﴉys] -�}�&f������&�M9��r]��aUP�mL��mc��ۘӦ���mL��>�jcf���l�[�~�[�~����1sݘ���L�\/fzO���0o˽��0q�-��S81qoaV��`������mbޖ;ѬgQq�{��m7��D&'&B,���L�Q��03����F��׳-)�o�1e:ΐ�qu��Q�,���C��7��[0p�u��D)�J�R^�L���)ehJ�y'S�Iw��k�RX�ٍT��A�=���l)��t)�"b��&϶ҥ�Dm}�1� --��ˋ������� K����]�V�bڔ��}-m������k�M�[�nk��E�{[EC-�=CE�fNi�i��`M -��"q*�G���Σ�4��O��?��/��'H�B���iE�����۟�Qv�Q6��0���4�뷟����vuy�U7H1�A� Y��Ш -�j�B�=2�n�G[��p{T�4145�5�a�� -��N����d+�;����L�ڎߥD�ߥ�I�I7I���?/�p�NcVf��E�H�#xw~)����W�������#�� �F��x��U��v�4=��<M#&GȜʆ�1�'^�Il�Y���-�+qN{[���hfQB�� �B�]�0/�5�<� ຟv��,��p��^�{��*�x�q#�<��VW��2+�ʗ��)��1׃ڜ�<mN����}��Z���I������]?e�����+�Tm�b��Ru�o�O�0s�����I���m1�Z�3��3�����iƬ1�P\����L3Q��"\�h�#�D��8y�Zb��;f2di6}{���fLb��ڛ�&2͘m�Y�h�1�<�YE�2�T�$�&�<F���2�j��j����9�n�/?���鶘�4���5�~�]����g9�n1��5�0�~���I1��FS�Zwmj��}�E��G�,�Ծ�=v�}�h���>M(öqԾ�9U����_X�^9Ҝ��^9���h���ͱBs�������ִ��}^�㮢@�n�8�ׇ]+�o���u:�*�y�ۧ�y}е���}^�ì(0q���C�˹�R�Ş]�/��`����U��`]��ܬ�6$TJ3�=J�ԗB�B -��� -GW=��a��q���7V�K��������u.���K?''���o-B�_C"����ŢA=T���)���B�5j�{�i�v�#�c:U����������]��QUe)2��`̇l���V�h�e,U�8G-��Gu���"OZ�����'R9�t��E�b�l���� �uױ�;�u��x�:�&��%�c`���q��>�F���"��0~��i8�W�EŘ����D�5b����.����jTO�J��۸�^f��,�'t^����6�zYm�a��9ZX/u��a=�&����o�ᰞ��W�캭PPj�������a=R��v���Xj�n�A�0h�����nG�H�̧���"?��T�*o����߆�8_��8��5 M��AN�/�8T)֗�l�����á���1�3-��K�8@+Q���I���dsf,���H�)�C�}���,3�s0ne��:�����x�qp#��S�M����W�í�T_g�ȃ�:���O�M���T6�i46q�ֻ�ƨ.�Zo��2�Ьص��TF��r�'%��䈤2�b�JX4�S���)��Q >I8�S���2>r$��#�9e[���YeYc����%�UVG��"P#���oRi�Ie�t������}He�]��2Ug�������ʶJ��He1���ZF%��b)�`�Xb&��`�%3)S0��t��4�OV�\�8N �t֓�J@�,���`fY��[��d�uu~� -:)�T�]�o����wl>(�x$��7Ά�i�Y �n��� `����J��;K~�L�UM�0"YX9!���#�d���yDn��H� -����`�v8iC��j���5��@������� -��즒��.m�/�l��UP;�7C��w��ᗗ\zE`� +��_b`�A�V�V���V��v(�g�lT��:��3���OH�Śf��t�'p����]�k��&�\����Oo��^�B�Amb��P�P~���M)ФhU�tw�Z�n.��2 +�FD��f�0-=� ֈU���a�����:C[DuiV!�����2�Q%|�\F�i"3��{ě�!�h��W�|��C<�Zϻ���i����pa���1Z�8�2a+��C��6��o�G�P�G�!��������=r�z�h���������ȟ��?�#�o����L>�;���K��?���i�d����;�b�0�,�x�g��_8n(�?�g���x��o����sQ�U w +��8o����<Z�Z���蓆���.W2��� +�ӆb~|�/��E^1_��@0�����P�oo�������,��`�d�O��<F_�U��W1S��9;J6���< +�� G�ĺ�4�J:?�Є�N~a�$�_��C R'��R"�E���3-M�4��9��FG���% +]�� +�W�])4���LB����k�KQl�Xd��+2��[�� +����p<�1��%��M���w������3\Al��s��=���sщ�E�g�W������6����d+����U-:]Z��1YѰ14�r� (1���M�r�蜵�Ĉ������>\�ω��.��8�=�f����ą��g�]%�˰SC��]��)�7���m,y֣-�=G������m�x��-�=|&�4� +���Y��Բ��_�o�sփ-�}~~�F�rV���Y�X�����j�h˜�h��d8���~J7*<���:g=�!�%ZE�,���o�=���@cL/<b��g=��_���UD��p�pˬLm +��p����Y)�Yt�2Wo���L�����5�UϬ��,/C�k�q��lܶ��]�<x��8{��9Η�E!� +1��!|*��9��������K�j +�����çR�u�4n��P����a�I�c���E�> +�ʤ�s�/Uݝ�� +���ڜj!|A>U ���l���h�b��' +��=����k�R$_���<"j;�9Q2���#B骖Q����� �C`+��|�����z�o���m/����˻� +��T��kP� +��P�P�~����w7���T�kX����X�Xz����M��6�����~sy��0���P���"�j�X{�X�3�����a}��7��0�EϬlj�,�$S۪k61�B�����V}��"4�H�"]?�� U���J�ғ�����ܲ��RuY��Ǒ����� +J�f�`wR�4���Y��̩�$,a�4n��$#긻�T�)Z7��9c�;��c\h�����%�O��=�+�*�&mRB��9c�O�Ϩ�'�ʓ����������mzvS�6�%�[�K9U�^T/��"M�%ӊ��<|/��yakϣ�ԫ��a +���4g���g:W�Kܫ)?��G1���^���� �JymF��9f5� �`�,�C#�rj<���%�z��V��������'n^��O1p��#�[(��k8�xc̾^~�^�O�� +H��d+ +pS�\�mg3 ب�Pg���hKh�������k\�w��P��n��x��o +���K������41�A_|5�{�%����?�C/>�#�=�"���"�e>N��@-uT|eN��B`���h��W�C�(Ǽ�<�L��z�5�?�_��^DŇRcJY�����"z�"��Rf*�ԣ.�N&�b��%_| e��M�0Lg�G�h=�������"[N��@e�z���`�5�Mg\u�o&7Jj�B�<l�~��<��DMUN��\ +�;B +˕(��AS#�v��ٟj����A��\�|�h#k��ɚE4�h�KD;,^2��n�pS�<��c��|�g���偣�=��:�n��6���$�ٷF��q5� �Ms��Q�ވ]W�k�;�������i���(w�'�S������N��DK}�5��)w�]��F��]l�c��vQwڂ44-���c�M��Kwvvm�t[=*m��c��n�d�I�ǚ,�G�l���Xҿ)9%)�of��UNh`�'&����I?e����T�1�?1���N�)(�v����,�m�هY;���}Sr������J�y٢L;�0��� F�S��ig����k?�s�a��GQ���Ǡ��l2�g��vI�>�v�U���ԋz��V���iE����ҍ�ϣ�UD�߸���vc�1-�H��X?��\�|�XT��YLK8�07���10�>>�x�ֳ�W���b䍥�{��|�� +��4��iyG*��|�q��2W��+�۔�h»�š��F�貕�r�j�r<�m�k6��zrv,wձ�-W5���������zj�Kf�T9�-��h��Uz�ғ��h�Ź(s�r���z���`��Ӳ����w7���b�L��)��8�_R���Ŀy�C�M�/�M/�o�������C���C��Ŏ�ͥ"�?�-�G>�0�(��3�|dw\�'����E�ÅQ�>�.x����L&�p�}� '��qC�y=[M����5��@������0���P��y3_���JV�'��XG�`�u@�Rđ�W���=wL������/�w XQ��rͨ�p����K�G~��h� +`~xS��'�T`���*J�X_ۂ�ZA�f���r"�J��s<8%ƥ��}2����]���J�Ӿ������K&H��lv�֥t���,VC��y)Ț��*�;�?G�����U)���K�yo_��m_r�;m` +�F�/���W��Ą��&&r�nc�6ݭ��hc�/g�����'�1o,{0o�z0o��%R�13��LL����5�:laޔ;0`a�n[�7'p`r�{�?��Icu�ļ)��al_�{��m5��D&'&B^���k ���L���')�&k+���p̕�S�p�N��=�C��w�x��-����50C +a)E���W�Q�R�]�#��qR��r����`2p-G +ky��#�td���(M��i+O���xu�]�jKyR���>�D�Q��1e!-�#z�D�d6��l�L)qש�.�߇�/�hm��K��w'q̈́�x��m�"s�h��U4�R��3T4jʔ�4�Mt)��~���d%*:�����>]������r�4.D�3U ��~w�S9�n1ʦ��}sk����OW�n~���W� ��y���L�Fm�V����#����g�=�y �24u�:����DN����d+�[��ξ��L�ڎߥ���R��𤛤^zS����p�VcVf��E��nG�nY)���˪`�G���[爹�� �F��xn����������k19Bz���o������w�8��yi��|#�io3����,�Bȵ0�Y���e��@�9\������.�@v�_��Ƅ��� +%�t��,��@���U@�� +/�r�?#=��P�����ɡ4ۜ�iG��WNb��Vf(�����a�zMf��j�6�����S*��-� Af�'�qZ�#i�T�-�YKz%������B���4Cq1n��2���tbD�� �%����%�A�f��#ڟiF%���� n"ӌ�f�%�����ǝU4*�L]��T�Ӵ4�Q�@ŨL����n�O7W��~�tŜ��L�J��.��o��e�e +�u��UjR��Q�ۍ�6��J�>�" R��Q�Uj�� �Ծs�GTj��(öqԾl�� +��q���o�G����7N�=�xM5�F�K�K�J7IԾ������(k��p�>��qWqA�n�8�ׇ]+�o���u:�*�y�ۧ�y}е���}^�ì(0q���C�˹㦒5�g����#0��]�⽊r�]��6}$TJ�u{�P�/�J�,q���z�5��U���o�ԗb����#���kY�?�3 �~NN<�R�Z����dUv����)��xtO���H �d�R�b���0|-F��t�IkO�H�����㣪�Rd�Ӻ��j�⭖ �V�X��q�ZF����2��<i)_�֟H�x�9��}q�Ճ{�&��b�]�v��֡� k�����-�+��Z�, +gW�p�>�f�p^ucz�.��fԈ]�jPo������zg���Q=}Uh��ƅ���� � -W��������^V��zX/}��+�*�$���X��zb{_���BA�e>���Y��z�@�v�3X,ި�����*��zV!��u;�G +�|�.�SM��S� +�q>�۰�c���9X[�IQ� ȉ���G����֪�Nܡ;�\ |g��?<�@\��^���Z��v�N�� ���Y�$�����צ���i����Z٥��Z���u|P�� +F~�������x�*T�ke��:;F��id�oSo~~�"��}@���w�w]�Q]Ե�|92����GHe;��qRR#G$���1+a�DNv$N��P|�p�,��19e|�H9�G�sʶ�S�#,d�a�����dY�Xeu��Y�bD�@�M��6�T�LٚNO*ۇT�߅H*Su6m ���*�l�d�T�;�eTR��,�%X�,�[��`�%3)S0��t��4�OW�/\�8N �t�'���>�.���`fY��[�:2˺�:?V���n�Ѓ.��7��|��� +<- U:{��������^ �n��� `����K��;K~�UM�0"YX9!���#�d����Dn��H� +�����q�����!TZ�A�`RQ�=IB3࣑62US����T�è�� +V�L)��vo���2m���\zA`� � -�=m���C�Gp�*��˴ -�@�:m�� -8�H�W�Ï�ej��35��J��9L -���q��z�5<��aԎLo��(<6���j��t�N�� -m�{J���]c��)�SS�C���8�]6F��p�KQr�{[?٢����e[TE�@n�u{[��5~�-ќ�y�h`�,�^.[�;4S'�C��6��K);oO;�R�:�`��o����S��H��лR� -Vڇ�EƤ�v�e��CIo�V�䒦�� �t��,Я;-��+�V������DA�3�S�4�%���礯aj*������ٚ�?}�E(�"���ob���m���� -�Êy �^�R��t����ѩ���|y��&����7y�J�knF��i��箙�}&�k?���H)��K���5�Ҟю��5A� �)E�N���Z�+2�r�,���\Sgn'��j�k�gS%qm��4��y��5*%�����-ZW����.3���[K̶Wt��N��aԴ5U&�=�M2��P$k�jYk�'R�i��E�{�-���$��/�b�=Ւ�4̍M�{̥���d�ǐ��5?2����n�!݃.����bN�176��10N+cN�17���1�z[<���pjjka�R�T� -�c�M8~ӛ�@s1gJ6̩��L5�0��2���E[��R����jƔ&���Q�06.aJJ/�mfɊA_1���e�倁���#����2�w�CV�(�X&�b�.�|�p��1SUSʈ�����2Q�,;�ib5yZL�q���y.�Otƅ1�a�vn�#j�sS���˩����.q͗��^�rq�Y���:������+^���P%b�>�w�X����8a�N1�+1FX��*{P�}7�|���d:Y}Ko��s����#%��4m?vM �ǫ�$����ϲ�<y.�L�m���6q��Wfʿ�\fQl_pqL������wS�b���s��q=QR�1����;��c��]>����:�ד倯��?~�����$η׃�w� �l��d��Mu;~ -�G�,7Q�N*�q?��G����h�,E��r�=�Ga��<rHHqNRإ~���x3���d�hތ����e����BL%I$��9e����ȡ�ȑ6����&ᲐIa��<�T"P�:Rt%h���� -��h�����N_x/2��Z^Uٚ)݄:W�[�o���ª�Y˨t -],�EOZX�-��L:[�p��eQ���:�}Y�r�g�h^���\^��/�Z -{̧��:)A�/�Z�z��WD������]�k���5r�=�������[���@�7��V�] F�!�"�ˢ�����s�U2��\�T����"�͢�" (����d:�r����l��B��I��B��ee;���Z����5�P�t�cJo*I�ZW��B�>�k����Ei���~�����.l�+�R �V���c�!n��Z��:6�]q-h:=Q!ҧ4�?i�< �W�gd����/>�I��r�����3^��pXF����8p��/3�!�'���ב�S�P�g5�v'75*w�̇`gd�ۓ��Ǎ�q�Ҹ�:Y��Z�}�gBθ_�K����8Q[ -�6bɌ}.+�hԒ$����]�sĈ*n_�t)�T�Z݃��h��=#��l���TehԞM��U� -Ei3�܅�����#�J��h�m5e��0*?C�IS�]�LR`��d%�:h4i�y4@��,�E�\N�O�׳�p����ŀ��0=�����k�kƄ54n�&���4\�9hC�J1jW�W -^�W���7P���8��o�NIJ\3��<�,m�jl�b퉵D'� *F�f��_��s�>� �W�y7��1� -O��-��e>15ꗹ���|��K�C��E���Zk��`Q?�x�~�2�W��@���ᠷ<�g���q�[���m�An=�碶G���o9�碦��|_�n����4_���%�݃u�gC��@��W������İ$>r�� ���la�f'-�d`�zw��n���U�m_W�:M�ξleW�:Ҙ��uV�����6�j���_���u��<��[���*o~��e�{�'��usQl�)���~N�%�Y�9�_�x=\z����&�m����5��`=������?�p=�sS" -z��fD{л-�A_c�i�Ù���A_C�0�o����E���E�ق��~���}õ�-�-�o�pm|zs#O�gX��[�r��s -LՓ��aVkŎ������oFv�0)>b5�W��p4rh�����@�ox_���t��n�eMB��q��[jd�8�,��)��c�<r-㢫�0����!�x -s-��\�"���z����,j2Đ*�-a�j���1�� [��b�nA�tEi���oq��/.��o��2��m���wV˨ �X���b&�<=�@���'��^�z� �p�WL+|�����HK�&�u.��n�9)��B���b�Ǖ�%�{�ʣݭ -�� 1�L#�L g�㛉V���fb@A�[m&�ID�T@=ظ��TN�j�|Eܥ)J?I�ir҅�OS}���(�*jD<s��!q�.)�(��$~B[��ڴ��ⴍQ�Z"��+�.�xn�7�� �շa=JN�%����An?LN�&��? -�S)�{а9mz�<�L�j~�ωlX[����ж���Ih���6v1�3.�����жp�mbh[���f]�XU��ݝu�V�eG棆���v}*���FNԑw#��)|�_����6 -�T�\D��E��Y���V��FM��Q�m����N��+�ͤ����=�ciP�� -ۮǒ� -lo��GwZ�!�U3jd[�K��4ʥC`�y��6�B�{̤�A� -�m���u�C��fh�i�m -p#y�\i���$����5?��CNJ 7�7z�UȇT���@n"p��ˡ��S�e�J078L�w�N�1�Y��\�(V��>�FY�Vy�����Un�Gp�F��#������(���d��xT���E�*<�pU�����#HE�Pw47�>��$��u�G�NR��8������9P����́ST��z�@���V�9�1�8�5�8 ��w��y��d���.�zq@�{t"�S(�d�漴js^��������sW�6��e�Plž��w��,ݾ���6g��ۜ~�mΫr=c���{�����:�M�215�Sc����4V#�|}Lv�f�f{��RX&�� -��O;\��/^%�J��VFU�e��$-���[����[�Ao�V�ߺUt�*-�� -a�hH�{��lۥA��RjN�B2ۙ9�� �[��]�٥Dʊ��f�Z��!�X�b�^�I��5nѐ27$8Y����c44�A��� -2�d��1r��#�L�����M����Q�}��95ni���F��cF�ҵ�<-&�X�.�ᒿ�D�\E�DK�؉��T�Ss+ -�GmJn��P���/�;F�*� �!|ӫ���j��r���7��)Z�J�'o���8Q�8����uTh uN�5��w��B��Qʾ��~�S�"mp�v��q�t_��)5��(��粛IE����,k5#��W�p=�#\ -����6�3\���Y��.Κ,�|ͅ��p��"_��8��5=�8�?��#K�����#����D��No1^l���7B��������YՇk�:~{��m>&�ΐ�L����?N>'�B?�pųX�x�r��� ���@Z���2�>��%`��P^É��-j -��}>�x_��E���"��]���]Qkly�c�A+>��y��6�G�_�lA@�/i|�T⛼�>�q��d�V�<pHE#�b�Ӽ��|=�f�� -9{9�8�cSk�~��0{�;�b�f���md��ʢr[�$�Gq���8�� -���R3��JGA�-}~{��"�Tn��ܓF����>oH����7�q!�����1Z��,�"���[�ˈE%=�ʊn����[�8?�6FTs�y���j��[��[���Lٚ�����i@Vnͭt�Ux��R�-Uy3�V�Ay��n�)�ĭ[x+6v;����5���R�h��Qo����eL�I�p��V2�2-��^K��T;���_>��-�Ғ �K�6��0! -���:�o>�z%# -Q�bmEq3-���m�6�Fm3g���k��Ym��Y4� e�i�YH���QP>�q�t���������2z�J�I -�7��/Iw�T���t;,u�LB��~�Q)���T9�zv,!}P -��$B��B1š�\�rq`�B��E��>��6�6lK*���-�P��X�eQ�k�m �s%��Xg�i��ٖ�lXG�0�o[��S�M��ۖ�lXg��Cܾm��>�6�m[6�/`�m�H^��klX�z�+����+Tj�<<Y���|�������pa���$�WN���2Ul�RV��h� -�H7-�U�Zg��Zk��p,k�[K �@�o���[�V�n²6���v�<��۰��6�U�m���F���a$��4�+^N�y�������w�PK��-�^*�PK;cA&sammoa_Diagrammedecasdutilisation.pgmlMN=o�0��+�7�ٵAuM 0�1Q�d`���aY"qd'U~|������ݻw��Os'���m�q ���P�G��l7��eޕ���l:�\/��D`$���c�:����|�L�d�8m�n�����Xu��"����1���4TrR*�����M��9U�����o�� �n��gV��I�������л��z�Y��:��d�PKǒV9�PK;cAsammoa_Diagrammedeclasses2.pgml��o�8��_���t'�)�1/]өחӤ�VݺI�4�(qRn$D@��t����@Jwi�N�8���<��1��1��;F^0髠�� +�=m��� �#8E���e�4�M����� +0���"�9@�����25<S������r��|=����0jG�W��(<6���j��t�N�_� +`zO����5F��b;5�8��?��1�ׅ�^��C�ۢ`� ��� +9�]�E�PT��mQ�ۢp�-'�a�tK4��t�%-˪�˖<���x2;4��a���H�{ڡ���y;4U�������v��-UQ/`���-2��v�e��C���?�%M�8�]�C/��N� �ʹb/no��_� �=�S�m�)J�͡=������P�W���Pna��5���4���X��.o�g�e�m8V�Kp����8��?�4�Nm����d��M^���o����܌��<�Q�]3��Lr�~ +���RU_��r��{H{F;�Rׄ5�M)���)����"s/�ɲpO��5u�vK���V6U���M�H\#R⚬�Mݢuu]���23�ݼ�D�l{E'�뤫FM[Sפ�DziM:�(��F�����´?w�"ѽ��D���4���"Ṯ'ZҚ���it����0�����q��G�r��bЍ=�{Х��UU�I1��F�=���Ye�i1��=�Ro��0W�+���Z���0�*�Gç��tΆ��f"�\̙� +s�j)S�0̭�L%�9u��0��1u�v��1�-FS�q16.a*Cv/�m��H +��`ƅ����*>����H���Yԣ�b����r��0)*�c��O)# ��2wb�D9hvr�b5}XL�q���i.�Otƅ1�a�vn�#j�sS���˩����.q͗��^�rq�Y���:������+^���P%b�>�w�X����8a�N1�7b��p�U��J�n�����l����de?�+�1GJڏ9h�~���W�I67s�f'Zy6�\���ۄ#�V{���B^�)��r=x�b��/��l8-��7(�>E���p%�����M��(���.�6��q���.\�~����.���8�^ +2O�Ev�(������6���!|Y�XL�D�:�@O�L�~b ����1ђY�6h��b+z��foy�$�✤�KYȂ�$ތ�wOƠQ�U6���Z^��$ɀD�4���Z9T9�F��2�����4\2)�����!Y�T��*:�4zkyAB5m|`������E��[˫*[3��P��rk���a.� +p���J�З%���I�����IgK��1�,��V^�/�Z��c4�P�Vo.���E-�=�STE����F-C=��+�NKP��D�.�����B�����'����[i�K ��jw+Ǯ#��s��eQ�E�i��*�es.����c��fі" �Gg�ʓ�,t�̖*(t�D�1��?,[Q��I鬵�����CI�MR�)��$%����EA�>k��oa��:�1s��.X�K]Vܥ�-�tQg��C�~�5��:6�]q�5������(��O/O������t~����1I�e�AP�����*=��w�e��x8��q���/�3���drx~F �38�¡�euIv'7=��/����f�/;#��,� ��[�s���E���}&䌻�p���vϺ��X�h����W�ze�Z+ �&pt������`b�KYRM��E���FP��Q6U�g������P�����Е����]��F�x�V�P��F�ghk��e״&)0 +svF��3jϣr4�u��XD��t��~�x.�l]3�v'��]��+�7 +4z����cB�r�5���Y� +s0��bO�=���Վ�=��^�[��؞�|������y�Y�c�`��d�+I"V� �X\�P{���!��0��`��JR��kqN� `��e����G +f>=�L�I�%���a�:��֒5�s�0 G��a�Z2���o��Aoy ��� ��0Xk�ȃ�z(�u� +����X��4=Ș6��A�4_���5�:�e���=�����Cb���\`b�'U�7[������6�L�Gp�y��m������#h��p�e+���Y�y�[�����2o���J�*��м��g�anߺl}�y���6.�d>�����b�M�if�>`9 +�<����qXE��pM��$�F��H�>c�"t������A�҃v����9M�sS$�M��6��!f��p�k;���X�y��7]�ߔ�"������I_c��Cܾ������m�6�'���'�3,�~ޭq9���r���0��b����cq.�Gv�1)>by���p4rh"�؟���5 +��o4z����+�_�Y��$���0E��c���#G��y�Z +FW�c^ +��|�)J��`�J��/"Y�T ��::�" +1� +oK�QMJ�^!3��5��B�>��]����v-���`���&`l����[-�Xg�����-K��f̴,�A-�/j +F��t���@f8.�@,�����&��%��}E���Ç�<�i��`NJ0�P������q%�i �>�iw��bB�D1�H5����f�դ���PP��V��j��*�l\�@W">ZM�K�m���t!����.��C����jD<s��!q�.�쮒� i]P���i��E�I�ⵖd�/<�"�>�7�Vy-�[}֣䤍Q�Z�H�����ar��#�� +��>�2�� +��������g���v�5iU����-�`OB�.�������(.`�F����lC�r�v7k�Ī\��Bz����|��6�B�.���]m�Dy7B۟��ea`�Zl�א�ʘk������:_�ۂ�j2j��F����c:}`{��6�۪��5��Ae�+l�Kj7���2>�i�tVͨ�m}]���q]:�0ڦZh{��t6U!�M�жx`�A���mS-��n$o�+]��Ѿq���r�I �&�F� +��� +���M�r9�=�&�^ �&� �.� 8�9r��E�b��~�#i�Un�G���]?�Z�xgh��<}9����c�x�̜�G�@5�*<P���W*s�h<��=��令_һJL^�y�$�����NQ�����:�8Ee(�gT���m��C�^Ӊ;z�ٜ罜z�ڥ^#d0����%Y�9/�ڜofs�|�j�͉�P���� (�b���;ns^��n���{����mN��6�r=c���{�����:�M�215�Sc����4V#�|}Lv�f�J�8Od��0��i��0�BΨ�歹Qźl����UZ�ȾU�z���֭R�q�����Hѐ*��v)� +ضKY��RjN�B2ۙ9�� �[��]��٥��h�4��1�u .1�:�7���q �V��-R� + Nd���p��F��٨ sJ&>%g*�r�bdv�&�qK����IS����[�t��yu�٪ �j���.��u����'��¸�L�$��(M��05���zԦ�l�U��/���9s�|�0�l�^->�W{�7��7T�!xM�JV�>ys��ĉ��1o�4���BK�s +�1��c�2]�R��7����i�;��p�C����Af�+�Qf��e7���g{9Y�jF�}=\�� ��G�<E�l4�=\��w��p�]�57X�̅���|�D�n�q�m�{G7��}d��02���\W� +u�_Y��b#�4�j��5@Fo�x=ȪΒŭ�Bߏ}�m>&g�h&m��g�'/��V����x�����u��-���b_ia#�b�}R�K�U&By�N��mQk���7������/�������%��Zc��C��� +�-w���9�r�>���_��&�������8s]�d�V�<pHE#�b�Ӽ��|�����9��|@q��lSk�~��0{�;�b�f���md�IeQ��M����c��E�f��aq�����K ĩ��t����g�-��r[|�4r��\�yC�m�������V�h�x��BQ�-��݊_F�DQ�S���V��T�wkXN�ϻ��\���DT��֨�e����8�t���@kn�=�d����J��Z��� +o����j%�w�궚�Op��[� �ۡ�$����ܭ�!���6���8=Ce��$lq��V2�2-��^K��T;��۟?��)�Ғ �K�6��0! +���:��?��FF����,����p[3���,��9;�]\���j[-͢�Ap +6�4��:�!*�G�?����R}���2����n�n*�_�� +R�S�"��a�d"��J���r��*g�[ώ%n���o9 ��MC!���Pq�A�80e!���"Kk�͢ +ےJ��=mK*T$<�mY��k[B�\I�:�4�s8۲����<��ۖ��h~�e+��1��o[��O�M�mۖ���c[z$/�56�z=r������ZH�ƃ*��> +�^���1:��(0 +\.�����ͩ�Z���Wj!�ԯ����P�t�Ѳ-Qu�u�k-Y�>�3`i +�Z2t�,m�k�&,m� [k�ȃܾ +K�n�Z�߶K�nĚ���䘘F�}��ie������ #�O�c�G�!2 +�3H�σ��� ͵G�Y皣�b֤� +TjH��9�9��*5�c����4P���us�� +Tj�y��7G;�@�"���Ѣ�)�j_�����}�cd�N��#���8{���PK+����*֡PKhiA&sammoa_Diagrammedecasdutilisation.pgmlMN=o�0��+�7�ٵAuM 0�1Q�d`���aY"qd'U~|������ݻw��Os'���m�q ���P�G��l7��eޕ���l:�\/��D`$���c�:����|�L�d�8m�n�����Xu��"����1���4TrR*�����M��9U�����o�� �n��gV��I�������л��z�Y��:��d�PKǒV9�PKhiAsammoa_Diagrammedeclasses2.pgml��o�8��_���t'�)�1/]өחӤ�VݺI�4�(qRn$D@��t����@Jwi�N�8���<��1��1��;F^0髠�� ����������KUޜ��r�����Յ2�/|����⽢��� ��Frc@"7��q�Z�zN8 f��x�(tƽ(vb��;�Ù�Bқy�O�ߝ�N�����y�����0d{hX�G��iG����)�g�I_M��-�e��H��� �u< ��4�x鍴��M��$&|EP�W2�����oS'���EލO�CǏ��(&! �)�����:���a�4*Vt�8�nf1)���� @@ -103,74 +112,66 @@ j���z!�%;����joƋ�j��`AO�"�(�P^"��nEPIY�Ƭ��ST�U� q{��a��� U -=�3)��3�������P�h�3)��hS��1���bC�%_�t��t+��N�Z -*�>�)�WS�d �T['�L�Ty�>�SM���?tL��dዙ�YO��P�X -�B���aT��Ϯ�ΉOb��n��BݝJ��c 2�/["���"��B�(��8��rL9�ϥZ���B���VZ -Ϧ����[b<�ض�f���ʦ��{N,3 -'hÉp�T�ЪHhTq��N�e�dU3 ܼ��wd��ċ�e�~�M9��>q&5��a��@s�|� -'�eU���^t���u�Y蒫 �i�OTQ�b�������Jűo�7r�;NG�) �Uc�g�Ũ�]�$o5ͫ6�m�-m���LX�o����ڤ=����l���'$�d:�O�(���G0��aD�X]�Ƣva��9qa���xD����)��߸ -�������`����٠%���Eq���&iu���:�?t����϶�m�m�%��#��;̶�@��Ʋ���*Xkٮ��6ۆlÍ� -[� -ɶ��l~��l�mCv��C����6֫��Ͷ�������Wt�`�7C���!��Df饌�h����t��S��N����B���ţ�����L�8K�f������������l�$2+^o�:_t�*ה#nV����x��Yz9��� ����f� pN0��p�U�9����"�U<&T��6ঘok�n&����q����ۓѧ�� -)2�U�,_��e���2����LF��*2Z�W�і�2�&EfZ�Ș�ZKF��}�1���ٮ=�Z�m{��>[�6�WJ�х}5�m�ٮ9ڪc�ۮs��fh���s��w#ܵ����.ӽ��hp%�����x�d������7-�����PK�M���VPK;cAsammoa.todoeO�j�0<�_��.YnkW6�M��{��Xk#P�ERL?�5%Ѕeg��aV�/�,`�ƙ�H�3��Tz���ٝ�HɾI����Н?�ģBҞ���J�H��*%a%�u�|�� +=�3)��3�������P�h�3)˒�1�Њ�So�*6t\�H7p�N�r��t����퓚�z5�N��0O�u�j�DN��^�s9�*�J>�CǴ,N��{��)T<���a,t�;����s�ء��$�Pw�R1�X���˖�6�H.��x,��0�-�S!��s��f촐��Bų�b<����7�m��!����&瞄�L� ��p";�9�*U���}Y8Y�7o����y0�d'�_S�h��O�IM i�j/�\'�qC��qY�.6���gi�`��*c���UԼ���mk�ߣe��Cq�[�������9bJ�z��h1��g�?�[M� +�|E�}K۽�6����y�6iϮ�$۲��� ;�N�D2ʫ��L��p�5V���]بsN\��j/�!5�wJ/�7����&�2�ǻqpG�E6h �gQ\x��IZ�A �����%l���mhc[kɶ�H���m4P�!���l� +�Z����Ͷ!�pclÖl�G�m�2ۂ_.>bې�m�P&�4�����k�m�����7���6X�͐5�mH�0�Yz)#?Ba/v9�l����f��v�����D`��殤�?�f��������m(;y%C�.n<�'�̊�۹���5�H�����5�%�:n�^��#2F��DbD~���q����4�t�N�D|w��!F� Uq���)&�ۚ�� �d!\�{�@��d���dtC��l�"�W�fm���>�o:�Ѻ�����e�%���I���:)2&�֒Ѷl�m�톣�F�k��Vd��e�ϖ� +��Rdta_�m[v�k������\����po�ܺ!��wm�{E����t/?�\�nkE��&;�5�:�1D��M�Fc�d�PKe����VPKhiAsammoa.todoeO�j�0<�_��.YnkW6�M��{��Xk#P�ERL?�5%Ѕeg��aV�/�,`�ƙ�H�3��Tz���ٝ�HɾI����Н?�ģBҞ���J�H��*%a%�u�|�� ���,���\�l�v� -l�:�L�A;��Nx�{�i7�����D�7��=�l5�^8�0�@h�@���h^PZ���ˢ����CYV�j*8�5���ӓ��LB�l�)�?�~�$?PKP����KPK;cAsammoa_profile.profile�����Q(K-*���S�UP2�3PRH�K�O��K ����Z()��qq��e��qqr�䔦g恘���> +l�:�L�A;��Nx�{�i7�����D�7��=�l5�^8�0�@h�@���h^PZ���ˢ����CYV�j*8�5���ӓ��LB�l�)�?�~�$?PKP����KPKhiAsammoa_profile.profile�����Q(K-*���S�UP2�3PRH�K�O��K ����Z()��qq��e��qqr�䔦g恘���> �z& Q}�0� -�����������b<��SR�S�R�K�����+�,EȂ9PK8��7y�PK;cA -sammoa.xmi�]ݖ�8r�ߧ���cϜl��CR�=�9�klj������\�HH�5Ej��c�U^#w���*��I�$%�I ��T��[@�� -�B��?|^���|�u�?)/[��K;�kZΜ~����U��Û�}���)�V#ռ��|g;���|O�q�y�]�����_"7ȏ/��"�X�v��2�J���گ��+MSF����l�_������512��FQ֟M�� P@(��6���K�Hہ7w)1߆>}�8�b�� -%�/�E�l^���w�_�z�n��U�7�FG�V�N���cS!w���%�y�l]�ZJ��M�UKU��|�T���u�����9Q��?(�gƷ�����EL���Vb�����$��Oߴ�7�oVwZ30��:������7���hH�ݫ�y��+��[��k�jutܟ�j���5��W���ӵ�k�Q��]��bᢗ���/�a�,#z���>��|t� ��{�f�_��h���x�H�}�)su�9��b�F#wA�=�=����mλM]��H�m����W�Ӣ -}�|����ڝ��{�:�/~�j�~�&q�$� -�8.���=7���_�óC�q�{y�"�Z��T��pp�M�q��F�x{w��PY�E&V��(�0�o�:���0|���Z�9V\o5 -�y�����X|V�3gFc�)�`�%�Ę̀$�(K>Q2��6G+��xX���lˏ�v�Dyt=_�`������Q^������/��k���W<��!�N1H���i�{��8&"�^�z�8�p��!���!��="�gbә�iL���-B����U?���r�t|�5���<^L�����DRq��D�?YsBn�)8�&�dc�7(����������dUL�'�ae-z������<��bR��Ƥ��X6�f��'����#y&O��w��( e����{?�Ho�ѽ�.!�xD����ߦa@��,*� -�CY��s��Td�����o�J���|�=����Ű�����Gr;��]#9�� -��ْ��#r�8VR1B&�3���0s6�I�r���$��L|/?��_���도ex���ÉX��Nf>����?; -�\*_X�>���&KL����;[�B��C�y�:F��kdV8�[�rO�蒻P��PI;�O!C�c:���$�n� -YP,p�Z���ْ�f�A�K�6Ͷ�E}�E�xؓ�A�\D�Au�j6�'��WcD~'���ꢼ��k��~k�ehQ����w+ -��߃-�<l�~(���B�C�'�h��u�}�@tt�f����4��u]� �y���~�.m,�R���Y���&�Z�S7�o��i8q���[�s��I�n�%��vO�*��X�?��֛6l�A�v�ݖ�W -�e�p��${>NF����?N8l�>�#�&)�c.��;K;Z��ƌ�D[�j=՜1ab��ѻ����� -���u�m{Ez��)`0hf!���,d�Gj�<{�&���gs����=MG�~��8ִn����F�����T�,ߚZd�"ݿ��e�D�ܻ7�et� U+�G�I��oa��ț�`�>�LY��>�B�� -�7+�5�XKB.�=�[��M4;��C&}�G5<��Y�>���������_�J����.���Z�x-�R���cy}�`f�@�e�E�0Fz M�ǵ���W��D��pa7\o~M�3�,���-���3Dh��;zBt[���m;��X֛�I\���u6��nj���ׁ�?�{;x��Xu=�x��|��������R���O��wo���vx�R��<|U��zb� -lC��n�v��*��v�i�En: -��V�pu��P�u���N�~�Dꗲ��w���}䋽Ĺ���tp_��ԟ�}�=���P������]|H�~�G��h2� ��'|b+�ط����ox�4�؉W��V6vߙ��y��Wg.ve���!����8���L�cC'��M���|���榎�p�\�H�7ʹ�yY&/Ѷ'=��D�Z�g\�R��q)a�P����/�����;�'�"�1ɑ<"v��c�G����6��g��I��pl.F��k��q^@+�ћ����1�m|m`���٫��ltz`�@��b7�!�<�s��<t��hkr'��; ��&�7�hM�UH����K�$F;���$FL�r�-�<&�6m�-�mP-m�Y{ff���UG�ӧ_w$>��~0�{]?3!�*np�".Z�N^�"fG�����&:�S�W�������t���-�mJi�������)�-�t��bY����\�Sdr�N��c�Wr����%/���c]���a����8 ����&3̸����VZ{E|��vR��3*��7̘s@����n��DŽ;����cfb�����|�͒/�n��9��KVǧ��*�:>��䦘�T �S/"�?-�"w�/�b� -�L�d��0����S8O.Gw�S4#xLḥ�p���a��aq������X�<�"4 &h㡚�V���Xe溪�6>�SDU˽����\�N��l�$���n��SH���Z��U��'��u����WH -��/&r^�<��yP��>�t -|�ȸ��5��̑Y��z����)����O`O�K���$&O,h��ȽSlc�D#seD��*��qv�溫bvV^X�&�_̚X�>Xou�y���d@���e�ʪ�w /E�VȣW�u0����p�e�g�x��O#�q��ƭ%[NxϪ�I7�ۤc-�/��>J��y^m-^�n�?��2�������O,dV����S ��8LF�9\�s�G82��m��C�PӚy��Bz�~I����n��+f�U�a4�* 'B�.�~@f��QK����4�"^tw��R�Az6E�bw|�{M�a��vս&j���{�q�-��!�.ޙP�^��Ť��o�d���<���U�~��9���zs*u/!��j��H]}S�H�#��2�������{�tn|O)a0b��Ā`-�<��h�����@��a�`T�\���3�B�u��-�`����E���g��IJ�\7j9���\A�P��@����A[l��� -@p�L���vO�Q��������ecf���,| ��c#X���_�ϧ\0X�O!��$��p#�<�ѷ>�%�N`!{�C�^m~oX=ď��r�DaP�=�t��m������A�0!����'�1-�0���3}6�O�D/zε(U[-�16�����ٲt���ѥ!r�U�����S%�(%2�4P<�i -f�)<��9�(V2�?%���|v�<����c��5��g1ȕJ����(L�����E�N��[*6Q�yu����Z�x���qRxx2�J�@�Um2�=6�~Ւ�����$�]��S���)#zmS�5��a�ۨ\���R�vq��ӗi��|���?�K���fG2�v�F�L����8�LW��r�Õ���d�5*��T���8eV���AÓ���y_{����\ܒ�3�;+�XB�b�ε�� -;zq�g�G���z�n���k 2LS�P�>f����R�9�����:s+M�)��<}�n���uy8p��B��\��2� dY�� 27��HP/$_N�937�76@�<-&O��b��. -�!�cHv �ЂN0�'�R�w��5���T3[����q�-)�cl�/\-�,&��T���:8�6�T��}�۩���Ò#��˶�c�ĎI�� x�4^�����Y;�����h�����6a L��a &+��0�v��h�A&��<C܃�Ⱦ -�ט��5B�$rW#�3��z�q�Y�m1q�`]��PYc$ߍ�̐���"j�JѠADC�D44�:sw;F��k�[���)�j�F�yZ$�.�m[����Ll�� -H ��b�-�ӗy|�^����L�h �͒��@z�T�J%�kQ�M�l��R�,&�8}��9���7za�:�B�)�������5�q됻Y��j-���Ԯ\1����&A�C���ʁH` � ��2-&z@�>�Hu��5 ,]nY����2�,�&�8}P�!���@�[¸�0�wB�Ay���E�a�C���so�������-8�(�P��'G�E�uy0Po{�Joiz�m4����6��y�m<�����z�di1Q�Ba�Ce��$5{;�>�xH]xȨY�=f��R;M -e)��˽��1C -���F�אZ���u�Ȉ0ZmdtM��^fn6�00�<?�� ��O����0}L�A|\$p��A�,-��0}�~Luh�GܨS��X�80��C����Sa� �4����7�/�e��p3a� �,ա� Q��[��v -d�<�<c��o)A �Lu���"���w�ڎ���-v��7�li�.ĝI3q� �,ա�0P�|�Ý���.��[;���g�m>�v�x�?�D.+CPD�d�1�'y#�p�R%3S�ǘ)6{BE9>ٓ�`n����֟S*�$N x�Sj��T\(n�A#��$��i1A#B�H�C��, �Ű��a g�a�M��`�bC���Â:���G�[p��eFA�Ce��k�o� ����Y.�d\u:��9�R��i�.�m�]�L�mg��K^n_ze<���B�}I���:F�yԷE���/!1W,d��;�K���)]�U���-�GX`�#bwq�#�H����0y�����嘉�\���͙C��IG�1^4_�s�E��jy���L�\$�-�G��sd&N�Hc��3`z�O0>�&Rn�e��L�w� ����<l�2�`r[�cl2���jt��0�##s8��H�[H"7$��gh19�$�$x�U_d�t@��u<��L&{�͏��Q�-a$U�9[��Y��"��Sj�~�Y�u�����@���r�A�yN-�������S�$L�u�O�)�'N��Ku��+���`��6c��g1��s���Xh\g�N����!#�1���ԇu\$�� ��p-��:�"��,ӭ���O_��D�ʱ�SnИY����`����ȭ��ct�CN�^0��T�� -i�:� �:SdM���ΦZ�Ô��ƍ.����?;�!���\-(�@�@1Hu�y�����-���ܔ�h�k$��p��� G�V=��D(p���;��|-(�@�>�,Hu��A\,�K��x��@��zɡ���2�. -�l'��Bų�����rl-��0}�5ա�P �Mf?�������Ь!3u\n�@e�����Ae�%I�<��$͈���w˟NU55C���g3��Y�mE����x��(��bj��5�R*�3Ķ�����Á�7e�Y�?I�@p(�:�8 U<��#T�::�Ũ������Lu�l��iג��{}cF婭O��j��)Sv"Z7KI -X�t�%Ͻ�l�F�A(m!��b6 �� -�T����2�MI���XEJ2���<��Am�T������{��&�p@��%O�6��ͩ�D&��8�.dyZL5q��G�C�q@"y.�l3��gl1'�%�#Ω��)!��Ѧ]��Qj����){*M��²��C�q��n�T���2�<ڶI�J�a���,�_Հ���)��������;(QRa{����`;Z�ztY�ag"���A -l����q�\���g1F��`�:TS��Pɭί�[L1 �@�C��_��o���r��,��Hu��QP�u���8��3����m!M�`����:6[��xja���W8)A���ֽ��,yB�>$�Ou���\��-CouL*C��ִ��1�<���y�( ��b��HgBR�ǁ^q���K��p@�����J����i�P@��U�'�Y�: -P�������Hq��pa!<�p 3]���g1�%��ة�F��. -@d��- -� 8Hu�wd��N-w���>X�C��� -�9Z̦�8}�g��P�\�-����BF��U{:3�Є]��9sZ>Z�;�ğ -d�Z�h��PͲ6'��=�#Mۡr7�5��ۺ�v��)�l��7�KL��1��B���(�Y��ښ�gmL��W��lu;l��Y2s���O�ÂK�% ���f}O�Q�O��.ִng̔17aQs�S{Oػs}�>o�%����C��L��S��/�9c��z�h��~Z���J/�y���C���,7��K����@�]���!��T���Ä(�g�|�3ђk -l���M�$Z~Bu0�0T��\�R���c���N��r3[������L�p�ƈ#�g�@���Ϫ�Ԅ[u��i�~�[�%���,�$��Y�3�������T���+D�Be��� ٖ ~ -~�� -*3�5�.t�B��%�?b�Hq��l���A��T����J����)��B��n�M���:T�g� -8Rrr��M�)'��ǟ7=�WEx�4�{|��Nr|�5ȝ}|��H�s�=��ԙ�=����=�����LK�j����c�� �Rn`�Bʎ�Q�m�r��u����Pٛ����)���wN>���`p����%�s�У�^քd.�+q��L��]�&d����w�g��ϙ�O��Dž^|�5,��`���B#���0��~�[�ؐ��"�G�:��O����Ɯ��$��<{�3�_�N� ��ǡ�����M��lq7�2�H�iEu+f�H��L��f����"�*d�Hr(Y�O�+ ����sӉ� -� ����P��q�`.K���#��`��1�HƬ�@�L��3B�N�L�c��f����T�hE�^�?�tڈe·Z��g��V���3��`� lW� -c�n��<�Og=���b2��'�&��̈�S� &���T`�� -Ŕ��O��1DN��u��4m�u�ۉ����^�̈́��\���ߜ���/Ax���x����7崿�%��x�n��F?���L�a4�H����T�w��6i�x�*���_���k-,�ff�ZP�Eq��6�����K��%@��K �x���� F~�� IYq+3)W�13k(���M�qf<2�@oalG��^ߘQc[�j=�d�K�!��L"��s��-f>Ë�õ��u��<��]��!=\�}��`�fzOSg�^��nS5f}��8i��b��ӗyN�^�y��Njr4������!��<]J��f��S�J����4�N����'J^�:�_Ƃ{�����!�{��( ��vA�z� ;�(pI(��fҲQ��.�8�);df�����IR6p0J -L+1 ���qT/;0��@��Bs��3�@��e�{j3�����b��[K&��$YZL9 ��L�Ce� ��ky�/5w��c��Ys�a��s�v��g1a 2݈�uy -|˴8%ס;L��,�;��T@�����xn9ļ(�cj1u�%��ĩ�CA]In1��,-&ա�I%@p4� -��,� ��iz��h��f�@����44��k1q�`}��P��ħu+W�ng&Q���4�k���ͦmN�nK7"�ꬉ��ӯ?7+��l'3�='�g���fq9���Y�3q�u�{�<4+.�C����j%��xg8T�W��*����R떷D��/3mI���BH.2o���L�p�.*�#)�|>k�|�x��3!��l�\oA�-G��K@��� �E��3f_���U�#�������� �%�: -��0����C92W����;��$�\��īC��3� -S|C�@���թ�I�NY����Z�rѮ�x+���ߜ� -j8�M��;E5p�nu��Z2���@W�P;s��n�՟"=���{�l�[}&�̜�U��~�9v9ZX���'P,5#�aɌ߃����%�����%��r��k���ۚ�gmL -����f��aGQj;[t���T�y������.:~���1�c|i���Û�бj䮈�K�6�>� ���A�;���ypz,@4���0?��I�Y� -afQ~�A�܄yg��̢�/�ڴ���6%�k�Y{f���jm��K�mJ� 3c�?�6Vg��8��ɼ��t���I�����pR,-�/A�X����-T�4�� -Q��p���&!�S�1X~�d�~B4���B�}I�%KU#�<�M�>�%$j�B�|�����x��!~DO��&�'�X�u��.ns�pd�䋇�Ä(���O�c&ZrqiC7g�l��i��kQ�ZfOB��]u��4��#v.ucٜք߉��E�%�Gu�uG)֣;�{ �,�/�SXa�78W�漜+z湗?#�2Qe�+y-���|Ė� T�YPu3�����v��O���%��A����P���w3>��NJ�9�r'�I=A�s������N[�Ә"��#%�Ů)F+�[E�{�D�����l������r��ѵ'��\�A�h�|�(�_3�CZ�ݜ:�N���M�E/f�YvI�=��Ϋ_E��rK�F�̑��鹝�ST�w1��bbeI�2�GĠ��9!�W�������b�@K��?/]/P��P�!�Ɗ�l#��(K;���XyB6�$�s|ѡ܋�0 ��N��e醞����3}��G��b��f���[��@��(`��禹,�{��ߵ��KG�����Z�1p���<�Gn���R���1 -a�M�Xͮ�X��96����vc��U�On��T��L��"��YwT�G0h'�_w)|~��o��v�}Fnw��g� -���������r"d�>����PK����"W�PK;cA��DH�sammoa.argoPK;cA��-�^*��sammoa_Diagrammedeclasses.pgmlPK;cAǒV9�&+-sammoa_Diagrammedecasdutilisation.pgmlPK;cA�M���VM.sammoa_Diagrammedeclasses2.pgmlPK;cAP����K�6sammoa.todoPK;cA8��7y��7sammoa_profile.profilePK;cA����"W� -k8sammoa.xmiPK�}[ \ No newline at end of file +�����������b<��SR�S�R�K�����+�,EȂ9PK8��7y�PKhiA +sammoa.xmi�]ݖ�8r�ߧ���cϜl�%��${�s��N'�w���jD�j�)RCR=�^�5r��L����IP�Z�@�(�G��%d�P��P(T}��癫<� t|O����h>W�g���M�?��\u�+?����{{�|�9�Ts�9����?�}C��ißM���f8�#7ȏϕ�!#4��vŖ�_L����/Z���2��+j��>�E��k<`d�����>[���a/B���Z��?�� "m��ԧ�|��;���#/T(� +�d���m���:՛u˟��_5m�[�;%��NH�'w��E�%�y�l]�Z���P�/Z��O仦��[���B����;S������>~��'�k��0�oaWI���oȻ~�9.���о�~��ӊ� ?Mߋ�}W�$]_�]�α�!U;W�+�*WWF��KƦm��mtۨ���l6_47���?_�D�r�f3=W��n�M�v��U�O6rCL���Q�7�O_����I��h�%���R���ak���� +���~{�{�����*�w�����rۡ�uq���C������? q�w����|�����7�n ��40^響��p���}�~��u��k1:R�N���ܷ|���;����;-��Sda���2C怜�0� +���]8s4Ŋ,GA��@ М��� +���(�`�e����� ;�/)_��%������_G��s{d�<�A��0e�߿���S����7��Ϧ�K���Wl�dH�SLҀ�����ye9�^�)��ȭW��?������=�E��p@�hď���t�d) C���C�AL�?��l�K�lK�L4ߣ3%R�]��r��H�_��N��p+�����b��b�,9��G�U,j����r�%�ܯ��H��tx �� �����0���.қ̯�^s��b> �l���ED��K���������b:�_������6�� �/e�w1]b>�?����l|�8��-�!> o�POe��p���I��F2��?,�.���^�<Q�z��^~$,��?�NĂ�~2s�T��(��S��R�"@Dd��wȟ.1�1 j�E8l(���[�V���̍f�i�Y�T�c���'w��O��vH�B�>�t N��Z(���F �L�8���m�F�C�4-U렞�"l4�ʍj?e^!Ť�d9� �7�П�cD~'���ꢼ���!w����C�Zs�-5����x`�X�C��$�d~���^�=��&��۳Z�n�֙���u��7h��:�1�K�0�SLfM����ꎻ�[�߾�ݺ��#��`Iϑz'��,y�$awd�a��'����zӆK���n���ͲᱬlS�ɞ��a���O��\���!��w㿖���������m���=Ӧ0���Y6&F���~��2��U��%���f�D�~���V�`!?VC�8hؘ�O�3F�E�C�}�Z�R���z=��8��N�����F�ÿ�=W�Й8d�b�?_L\��1�"ypg���6d +!�V�2c�=�<��%��P0���}v��b�],L�6��,�ט-�șr��Y��F�cY:`��|T#�/�՜��#m,�L�L.����T魟+��<��A+�e^j�5s,����̳ȡF(B������h�������� +?�^����%�5���][�F�����GD�A��ض�l�e���e��\g#�~�8�M!.p|����u������~��#����w����ܗ�Vu?�o_�s9�m�6Ey���%��l6�\����UJ��&�b��t�/l�ֿ� +��_�u����$���u)�4.e���dM���{�s���#i��3�7��<>���KA(way����2����.����q��?s���0�M'� ���I��i.>�7^��'y��}gV�g���Ů�?� ��[�oz9�����qh: +�t}S��8� +�K$s՛fZc���,��hۓ��t�M��3�e)c�8��0W�GJ Y�[Hr�����Xߘ�H�V�1ۣ�s�N�Lճ���x��l�m<d.Ahc}��Z�jR���lն2���^յ�m��6�:����S�k��������8�8�w{�R�n���(b�p����gqne�V\% N �[�\��9ѡ�۔�c�݃-��-vSv[���\`�Ud�VV[l|�N��e:EΏ��n�1v��1�y��CeT�_�O��ۘeU�7��A�W�7�`��+ⳮ��S���Q$�aF��[|�<&\�q�]3�#�����l�|ats�t'Pljh�b'�����Γ�q�1��S�\L��d�������\�6h2���7�Ϊ����Q=<h��yr9z��N�M��q˰q���u����aq�����X�<�"4uhざy���Xcf���6>�SD�ʽ�h̔�N��l�$�yA�n��SH��Z��U��Yc;u����WH +'�-&r^�<��yP��>�t +|�ȸ���5���nfB���.7k�|�Z�Ff<�= /A#��C�<���/N#wO��U�̕qk��G��뮊ٹ�`I,����\̚X�>Xou�y���d@���e�ʪ�w /E�ֵ�W�u0����p�\�N`�x��OC���.)=�[K ���0�UI���.�I�.5�\[}(��7���Z��I�R��9d�8^��3+N�X�,��ˍ��@H�q���s���M�0�о7�3}��BͬM/!=M�$Ly�{T�[���d4a�l�t��Reҏq���ʾ�P�Kv���gT����� +���e�T`��Mѓ�_�V�ml��6���D�^��e�>n�E��/��٭UjeXZL�IQ��M�+��s��\5j�H�c�Z�{�7��B0 rͭ�f����b6�P�Z��)'��&�. +*[�:_@��!= 8�"�1n<��pdg�D�0�?,{��aE���pF�ŭ4?�S�#�)��u��A��-��`CZN(P�+� +�gH��Ur PŶ�����j�jW7P��������e#f���,�'�b3Z��_�ϧ\08�|����E`ό� +��Er�:��u�������c��( �p���I�chg�{�L��x���\�Z�͙>��'N�?�Z�����f����D�ٲt���ѥ!r�e�����S%�(%��4P<�i +f�)<��9�(V2�?m���@yNoq��(�k����+�V+��Q�VkuԮ�A�N��[�P�yu����Z����qRxx2�J�@�Um2�=6�~Ւ�����$�]jX��2(#����M����6��_����T���B����eZ��_i��O�ƒntt�X&�N��b� �c�g��*�].g�P:\�Mf^��I�_a��SfX`4<�[N˟��o���a��[�"|�vg�H�k��C�^\���f�������ޙAD�S��-���h!��ƮT<BN@0`ƨ$@���ԉ��OK�>c7���uy8p��B��\��2� dYj� 27��HP/$_N��93ױ7.@�<-&O��b��. +�!�cHv �ЂN0�'�R�w:�5{M{�[����KйF����v�� �c�FA�Ces�v�I*^�>��I���Ò#���u�#<ǞE�� x�4^�1Uװ�ƻ�= +��V������,���9,�d����Γm���Ӟg�{Pٷ!�S2�F�x�D�j�S/1n^�4+�-fa"N�KR*k��q�q�6 ᠈��0g��G4�ѐ� +͑���N�`�[w�?`�B��z�Q�`�I��C�z���"{?+�}o�H���j���eߤ ��"7S3�Hq���k���9ա�G �ZpS3�@)n��Y�>HƜ�@d��0Y�[@�)�������5�q됻Y���F��Ԯ\1����&A�C���ʁH`"���2-&z@�>�Hu��5 ,nY�����2�,�&�8}P�!���@�[¸�0�wB�Ay���E�a�C���so������#r8�(�P��'��E�uy0Po{��h醪��81�DŸm1����� B�8�Sϒ,-&�P�@#Lu�,�$�fwC�'�5˚Q��L`�Tjǡi���,��^�א]fHAr]�¨�R�zݎfKEf����e�fc���;yu�x����1��8p�8�]@H���ch����1�`�9r�N ������7ÂO����T�"�x3<C� �ς�̈́�p�T�c�D�*naK�7�;0�-����P�2ա��KB��B��ƚ�=��Z��mn���q}�;��g1qg��A�Y�Cea�,�t;K��]�~�dP�l.���a��,��1�����PA�� +���9�TÕJ��XLAc��� 1��xOB��sX��ZL-�Ȓ8��Nu�q�Rq����XN�_�@����HQ#��.�$,�&3�%�E<��7�ƂA�y=�.�W$~�o��XZ�Q L ��u��O mx���J�U���Zv��EW�tP�R-v�/n�22����/y�}�U�� \������g.�����!�uA��{����=fJ�`��qc��( ,�p��I�#������0������Y-�X���3�֍7��x 3�|�Ϲ�j��9�&3�S]�d��'ϑ{�Y#��>��}��Y6��p�.k@<5`r��L�<�T&�aC������c��N�U���̀����G��B�)� �<C�Ɂ'A $�Ku��"3� +=��y���d�G���L��FRU A������O.��9ա��gq�eZ�h��R��z�sj�`P'0���-�G��8a:�dxZL=q���^���X��c�v��?�9�(N�[Lu��B�:����8>2�=+�_�O}X�E�0{����A�,��2��kH����@�K�����.�.�8Xڌ�:!Fw:���#�VL% +q���F�C���=A����q���=�{m�\�unt��E�ɳI�_?0��jA!�B�A�C�C��En�� +��GK^#���\��; +��7� F�;���Q��kA���AdA�C���b�\:���&�g2<5J̴��uyPPg�@8a67*�m?��-fpȱ��J���AF�T�:C��7�y�l�����?��f +�@���r�3�$�.*�<(Ij�A{'iF� w،|(�[�t����:��Pm�kv�mE����x��(��bj��5�R*�3Ķ���������7e�Y�?I�@p(�:�8 U<��#T�::�Ű������Lu�l��iגm���=Ӧ���Y6;e�ND�z)I�˟n���ג��݈0 �-d�Y��8}���Pc�Q\&��#i~�{�HI�S�G�>�͓�Pc ޝp�9�dvH���Іp�9�p����4�s�Y�S�C�>(Ƒ�Pc�H��=�>��[� g �s�Ce}�B�`��I�@]zԵ�Y=M��b��҄�f�ǘ�Z��@�>p�:��,� �Ѷu�TB @�;�%�f9����$N�k�dEXo.G�A�� +�[^�'����ף�* +�c�}�j`K\��U�k�B@�4?�1r%+7ա�*.�Jnp~��b�H�R���?���eg10 N�@�C5��Ҭ{w�%�qO䀞ټ��o�Fkj�W�k�j!��I��7���pR�7�=�{e�Y��=Hh��PM'��Z��j[T(ڦ�k�I�)#�y{��P@��� � ΄�:�� +�w��̻ ���G��� 6zS��[�{��?�f!N T�Hu�B�/rE����hQ��Bx��@f +� +kP@���Ė *b�:���#�(�1�3�(8&� աޑ1�;��Mor���V?(�h1�����A�C�s�4l ԋ� +��nG�̬Bcv����h������?Ȱ� 4�� ա�emN*'�{`G��C�n\g� 0�u���S̹�o��`�g2Dm�«�Q�����mS6�4l6[�6[E*KfN���i{XpI�z� � +�o����ףVX�z��3fʈ��������8���}��K�ױ��^�����l����E�q�7��O�{�X�%4/3�{�У�o���Ed,9�!is�en�'�`B�dz|>9��ђk +����u�M�>��j�a��Ϲ�j��Ɔ���96��l�?:N�#3��4F1>}��d|�M�&ܲ�O�h�3�>�ooz`�$ ���E��Ŝ����:��]!*�W���u,�S��sXnИA��0p��:7�-Y���@���d���ݦ:T�8T:m�jMp,Z�0 +S�� +��P �*�H�ɑ">4ev��Ğf^?��^����R��aZ;���@�����G +�k�jUww��t�~�����Z;�l̴DK���? >6� )��(�lkmMU-ʉ��n�&Scobs�;����n�|"�u��(>*���K������� �\�m��aB0!;{�vu���Z����E���?g�_<?z�C�t8�+���[��L6�Àn�Ul=l�bC������L;P>1�;"S���X8p�)�j�ş��z�N<]���=�6w�(S���V�Q�bv�$�DPz����[DW��I%k� pE���rz�;�2�ݜ}!�X=��eɑ ���)�,9F*�1�$!�,����&���iy�f ݞh:���m��v[E,��2v<����ߜ�w#L`;�a�����<�M�.��K1 ���LvCf� +�)�Gfr*����bJt��'v�"�}�:�_�nc��c�B�^��e3�f'�A��/�7gf��K^��<*�@�0}b��^e���M9�/q�`*�_5��ϫ���d�M=4�cO�^�)h�掇��JX��[̽v�¢nfaFke]'��o3�@^Z��zX$�������� +b�7:���U�2�r�_3���"�_ߔ]g�#��ƶ�.��L��Uc�w5��?r4(�~�F03���Q���/N�.6S��!6�Lz�Wv=,V��p���N��yD]]�{ݘ͝�f�=��8i�z1U���<�D/̼D_'5�� +�a}}�S�rG{�.%y}�k�)s%nep�^��t� '�ςJ^�%/S�/c�=�s�bw��=�N���ZСq�� +\ +��LZ.��:P�R�����@f�'z]�$e7��P��7�Au;9�e�fY��(�X(`�C<���`Ȳ��{O*3(�.��db,�@��Ŕ�� �ɤ:T�ȿ���Rsg�:�!�͑3��Z�01��a��`~� A Ӎ�\��0��L�SrJ��$�ϲ����NJu�[�x���G�k�9�S�X�@(L��?TЕ��#��@ ��bRJX�T�G���T�X&t��4 +������f�D�0��44��k1q�`}��P��ħu+W�V3�(M\R��5���fӶ&V�e�1,�n"�k��k��� +�9���fE�ĉ�Y/&�Y\*ba��L�x�n9͊�E�:;>hz��A,���U�� +�fs�����-��L[R�d�����[!co1Kޑq>���\�X�ˇÙ���\�~0�ޖ�py�% ���� �E�t3f�F�7ˆG2���zw��Û1�%�: +��0����rd.o/�w�`+H���[�3�W��gg�,����P}c�S%��$.��de�<�]��V\��93P�p�&%w�������d0�Á���v�ߝN�7AF�atu�ƭ�Ff�Ɋ*a�W?��-,�肎̈(����d��~Y���q +��E���j9�ᕎ��ê�a[����i�l�:mv���E�)NL5���x �����Gx�={旆�:�9�9 +�F�轄l��@�z��md����lrV��$�'fc'(��E� cA�s�3�r�0듦��UJt�B�j[�&�Z#��҅y��#��X쏰��噫"�k0G2��9�3�i�Se����,�K���K(V���sU> +gpC��=�~�b���)��0L�^?!8�|��K���"�6�߆��Q�r�c�؏�k��zt��a"kq��_>$m��̚|ɐ���8��\\Z�͙/���<A?�Z�ĭ�ٓPjt�]�3�m���K][6�5�w�/��gQ~��QCd�Q���N�3��K�VG��� +Εb�9/犑y��g�:��{%�%U���� c6���<�Nf:XP�vA������F��^Gm���6�Ɲ�E���:D��:gtQ��� ����N'\re��Y�P ���e +���{ W�4��D%������DS7�k��O�S���6A���M�O���YO)�#"y�ߧҷާ1A!^f+��d���J�Vq���o��fk��t�m�sr8֮�Y�9�jrFs�SDq�E�g�ۻ)��I�H�f��S�gW�C<_�/F�-Y�3 +0G&���vBL|+�"���$����9�Ȕ-����]b?��/������%�<��H!�C�)D���5��=e�.Bz3GV���&�s|с܋�ED�ӟ�G��_J��'"���!@��i�r���oEy�������bpu +#-���^:R��T�����kF�������6���(��6��sy��j�O��3rG�_{�����'7�w3��5R�X��=�����~��a�] +�����i������6p���րۙ����ooo�1��=����PKH.�?�"��PKhiA��DH�sammoa.argoPKhiA+����*֡�sammoa_Diagrammedeclasses.pgmlPKhiAǒV9�&�-sammoa_Diagrammedecasdutilisation.pgmlPKhiAe����V�.sammoa_Diagrammedeclasses2.pgmlPKhiAP����K27sammoa.todoPKhiA8��7y�O8sammoa_profile.profilePKhiAH.�?�"�� +9sammoa.xmiPK�\ \ No newline at end of file Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.css 2012-08-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.css 2012-08-29 14:43:17 UTC (rev 491) @@ -66,7 +66,10 @@ } #lblStatus { - text: {flightUIModel.getCurrentRoute().getRouteType().name()}; + text: {flightUIModel.getCurrentRoute().getRouteType().name() + + (flightUIModel.getCurrentRoute().getEffortNumber() != null + ? " " + flightUIModel.getCurrentRoute().getEffortNumber() + : "")}; } #cbPanel { 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java 2012-08-29 14:43:17 UTC (rev 491) @@ -125,6 +125,7 @@ import javax.swing.AbstractButton; import javax.swing.Action; import javax.swing.ActionMap; +import javax.swing.DefaultCellEditor; import javax.swing.InputMap; import javax.swing.JCheckBox; import javax.swing.JComboBox; @@ -422,13 +423,24 @@ // OBSERVER columns (Left, Right, Nav, Co-Nav positions) { + final JComboBox comboBox = new JComboBox(); + comboBox.setRenderer(observerListCellRenderer); + SwingUtil.fillComboBox(comboBox, getModel().getFlightObserverForPositions(), null); + + getModel().addPropertyChangeListener( + FlightUIModel.PROPERTY_FLIGHT_OBSERVER_FOR_POSITIONS, + new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + SwingUtil.fillComboBox(comboBox, (List<Observer>) evt.getNewValue(), null); + } + }); + table.setDefaultEditor( - Observer.class, - new ObserverTableCellEditor(tableModel.getReference(), observerListCellRenderer) - ); - - table.setDefaultRenderer(Observer.class, - decoratorService.newTableCellRender(Observer.class)); + Observer.class, new DefaultCellEditor(comboBox)); + table.setDefaultRenderer( + Observer.class, decoratorService.newTableCellRender(Observer.class)); } // CROSSING_NUMBER column 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css 2012-08-29 14:43:17 UTC (rev 491) @@ -123,6 +123,11 @@ #routeTable { model: {routeTableModel}; + selectionMode: {ListSelectionModel.SINGLE_SELECTION}; + selectionBackground: {null}; + selectionForeground: {Color.BLACK}; + sortable: false; + _terminateEditOnFocusLost: {true}; } #addButton { @@ -130,13 +135,18 @@ } #lblObservation2 { - text:"sammoa.observation.title"; - horizontalTextPosition:"{JLabel.CENTER}"; - horizontalAlignment:"{JLabel.CENTER}"; + text: "sammoa.observation.title"; + horizontalTextPosition: {JLabel.CENTER}; + horizontalAlignment: {JLabel.CENTER}; } #observationTable { model:{observationTableModel}; + selectionMode: {ListSelectionModel.SINGLE_SELECTION}; + selectionBackground: {null}; + selectionForeground: {Color.BLACK}; + sortable: false; + _terminateEditOnFocusLost: {true}; } #leftButton { 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.jaxx 2012-08-29 14:43:17 UTC (rev 491) @@ -26,6 +26,8 @@ <import> java.awt.Dimension + java.awt.Color + javax.swing.ListSelectionModel fr.ulr.sammoa.persistence.Position fr.ulr.sammoa.persistence.Route 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java 2012-08-29 14:43:17 UTC (rev 491) @@ -24,6 +24,7 @@ */ import com.google.common.base.Supplier; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import fr.ulr.sammoa.application.FlightService; import fr.ulr.sammoa.application.device.DeviceState; @@ -71,6 +72,7 @@ import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.Highlighter; import org.jdesktop.swingx.table.TableColumnExt; +import org.nuiton.util.decorator.Decorator; import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.list.BeanListValidator; import org.slf4j.Logger; @@ -83,17 +85,14 @@ import javax.swing.JTextField; import javax.swing.ListCellRenderer; import javax.swing.ListSelectionModel; -import javax.swing.SwingUtilities; import javax.swing.border.LineBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import javax.swing.event.TableModelEvent; -import javax.swing.event.TableModelListener; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableModel; import java.awt.Color; -import java.awt.Rectangle; +import java.awt.Component; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; @@ -177,16 +176,15 @@ // init route section { + JXTable table = ui.getRouteTable(); + RouteTableModel tableModel = ui.getRouteTableModel(); + BeanListValidator<Route> validator = ui.getRouteValidator(); validator.setContext(validatorContext); getParentUI().setContextValue(validator, ROUTE_VALIDATOR_CONTEXT_VALUE); - RouteTableModel tableModel = ui.getRouteTableModel(); - - JXTable dataTable = ui.getRouteTable(); - - init(dataTable, new ListSelectionListener() { + init(table, new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { @@ -239,7 +237,7 @@ }); SwingUtil.setI18nTableHeaderRenderer( - dataTable, + table, n_("sammoa.observations.routeTable.column.effortNumber"), n_("sammoa.observations.routeTable.column.effortNumber.tip"), n_("sammoa.observations.routeTable.column.beginTime"), @@ -278,13 +276,14 @@ n_("sammoa.observations.routeTable.column.deleted.tip") ); + int columnToEditOnInsert = RouteTableModel.RouteColumn.SEA_STATE.ordinal(); flightUIModel.addPropertyChangeListener( FlightUIModel.PROPERTY_ROUTES, - new TableDataChangeListener(dataTable, tableModel) + new TableDataChangeListener(table, columnToEditOnInsert) ); // Highlighter for no modification - dataTable.addHighlighter( + table.addHighlighter( SammoaUtil.newForegroundColorHighlighter( new RouteNoModificationHighlightPredicate(tableModel), SammoaColors.ROUTE_NO_MODIFICATION_ROW_COLOR) @@ -295,19 +294,19 @@ SwingValidatorUtil.registerListValidator( validator, errorTableModel, - dataTable, + table, errorTable, dataLocator); addHightLighterOnEditor( - validator, dataTable, dataLocator, + validator, table, dataLocator, NuitonValidatorScope.ERROR, NuitonValidatorScope.WARNING); - dataTable.addHighlighter(SammoaUtil.newForegroundColorHighlighter( + table.addHighlighter(SammoaUtil.newForegroundColorHighlighter( new DeletedRowHighlightPredicate(flightUIModel.getRoutes()), SammoaColors.DELETED_ROW_COLOR) ); - dataTable.addHighlighter(SammoaUtil.newForegroundColorHighlighter( + table.addHighlighter(SammoaUtil.newForegroundColorHighlighter( new ValidRowHighlightPredicate(flightUIModel.getRoutes()), SammoaColors.VALID_ROW_COLOR) ); @@ -319,6 +318,7 @@ // init observation section { + JXTable table = ui.getObservationTable(); BeanListValidator<Observation> validator = ui.getObservationValidator(); validator.setContext(validatorContext); @@ -337,10 +337,10 @@ } + int columnToEditOnInsert = ObservationTableModel.ObservationColumn.POD_SIZE.ordinal(); flightUIModel.addPropertyChangeListener( FlightUIModel.PROPERTY_OBSERVATIONS, - new TableDataChangeListener(ui.getObservationTable(), - ui.getObservationTableModel()) + new TableDataChangeListener(table, columnToEditOnInsert) ); // For CircleBack buttons @@ -351,25 +351,14 @@ flightUIModel.addPropertyChangeListener( FlightUIModel.PROPERTY_ROUTE_EDIT_BEAN, observationUpdateListener); - JXTable dataTable = ui.getObservationTable(); - - // set combobox renderer for ObservationStatus - dataTable.setDefaultEditor(ObservationStatus.class, new DefaultCellEditor(new JComboBox(ObservationStatus.values()))); - - dataTable.addHighlighter( - SammoaUtil.newBackgroundColorHighlighter( - new ObservationForSelectedRouteHighlightPredicate(flightUIModel), - SammoaColors.OBSERVATION_FOR_ROUTE_ROW_COLOR) - ); - SwingUtil.setI18nTableHeaderRenderer( - dataTable, + table, n_("sammoa.observations.observationTable.column.observationNumber"), n_("sammoa.observations.observationTable.column.observationNumber.tip"), n_("sammoa.observations.observationTable.column.observationTime"), n_("sammoa.observations.observationTable.column.observationTime.tip"), - n_("sammoa.observations.observationTable.column.observer"), - n_("sammoa.observations.observationTable.column.observer.tip"), + n_("sammoa.observations.observationTable.column.position"), + n_("sammoa.observations.observationTable.column.position.tip"), n_("sammoa.observations.observationTable.column.podSize"), n_("sammoa.observations.observationTable.column.podSize.tip"), n_("sammoa.observations.observationTable.column.species"), @@ -399,7 +388,7 @@ ); // init(dataTable, new ObservationTableListSelectionListener(ui.getFlightUIModel())); - init(dataTable, new ListSelectionListener() { + init(table, new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { @@ -457,45 +446,84 @@ } }); - // set renderer and editor as button for circle back action - int circleBack = ObservationTableModel.ObservationColumn.CIRCLE_BACK.ordinal(); - ButtonActionTableCellEditorRenderer editorRenderer = new ButtonActionTableCellEditorRenderer( - CircleBackAction.CLIENT_PROPERTY_OBSERVATION, - new Supplier<Action>() { + TableCellRenderer stringRenderer = table.getDefaultRenderer(String.class); - @Override - public Action get() { - FlightUIHandler flightUIHandler = getParentUI().getHandler(); - return flightUIHandler.getActionMap().get("circleBack"); - } - }, - null - ); - TableColumnExt column = dataTable.getColumnExt(circleBack); + // ObservationStatus + { + JComboBox comboBox = new JComboBox(ObservationStatus.values()); + table.setDefaultEditor( + ObservationStatus.class, new DefaultCellEditor(comboBox)); + } - column.setSortable(false); - column.setCellEditor(editorRenderer); - column.setCellRenderer(editorRenderer); + // Position + { + TableCellRenderer renderer; + if (flightUIModel.isValidationMode()) { + renderer = new ObservationPositionCellRenderer( + stringRenderer, decoratorService, ui.getObservationTableModel()); + } else { + renderer = decoratorService.newTableCellRender(Position.class); + } + + JComboBox comboBox = new JComboBox(); + comboBox.setRenderer(decoratorService.newListCellRender(Position.class)); + SwingUtil.fillComboBox(comboBox, ImmutableList.of( + Position.FRONT_LEFT, Position.NAVIGATOR, Position.FRONT_RIGHT + ), null); + + table.setDefaultRenderer(Position.class, renderer); + table.setDefaultEditor( + Position.class, new DefaultCellEditor(comboBox)); + } + + // CircleBack action + { + int circleBack = ObservationTableModel.ObservationColumn.CIRCLE_BACK.ordinal(); + ButtonActionTableCellEditorRenderer editorRenderer = new ButtonActionTableCellEditorRenderer( + CircleBackAction.CLIENT_PROPERTY_OBSERVATION, + new Supplier<Action>() { + + @Override + public Action get() { + FlightUIHandler flightUIHandler = getParentUI().getHandler(); + return flightUIHandler.getActionMap().get("circleBack"); + } + }, + null + ); + TableColumnExt column = table.getColumnExt(circleBack); + + column.setSortable(false); + column.setCellEditor(editorRenderer); + column.setCellRenderer(editorRenderer); + } + ObservationValidatorDataLocator dataLocator = new ObservationValidatorDataLocator(); SwingValidatorUtil.registerListValidator( validator, errorTableModel, - dataTable, + table, errorTable, dataLocator); + table.addHighlighter( + SammoaUtil.newBackgroundColorHighlighter( + new ObservationForSelectedRouteHighlightPredicate(flightUIModel), + SammoaColors.OBSERVATION_FOR_ROUTE_ROW_COLOR) + ); + addHightLighterOnEditor( - validator, dataTable, dataLocator, + validator, table, dataLocator, NuitonValidatorScope.ERROR, NuitonValidatorScope.WARNING); - dataTable.addHighlighter(SammoaUtil.newForegroundColorHighlighter( + table.addHighlighter(SammoaUtil.newForegroundColorHighlighter( new DeletedRowHighlightPredicate(flightUIModel.getObservations()), SammoaColors.DELETED_ROW_COLOR) ); - dataTable.addHighlighter(SammoaUtil.newForegroundColorHighlighter( + table.addHighlighter(SammoaUtil.newForegroundColorHighlighter( new ValidRowHighlightPredicate(flightUIModel.getObservations()), SammoaColors.VALID_ROW_COLOR) ); @@ -594,17 +622,16 @@ } // Fire on TableModel to update the row (highlighting) - // invokeLater in case of new route, otherwise the size is not updated yet - // in tableModel and an IndexOutOfBounds appears - SwingUtilities.invokeLater(new Runnable() { + // ensureRowIndex in case of new route, otherwise the size is + // not updated yet in tableModel and an IndexOutOfBounds appears + int index = flightUIModel.indexOfRoutes(route); + SwingUtil.ensureRowIndex(ui.getRouteTableModel(), index); + ui.getRouteTableModel().fireTableRowsUpdated(index, index); - @Override - public void run() { - Route route = ui.getFlightUIModel().getRouteEditBean(); - int index = ui.getFlightUIModel().indexOfRoutes(route); - ui.getRouteTableModel().fireTableRowsUpdated(index, index); - } - }); + // Update observation table to ensure observer's name during validation + if (flightUIModel.isValidationMode()) { + updateObservationTable(route, false); + } } } } @@ -624,15 +651,15 @@ ListSelectionListener selectionListener) { // make tab key to focus only next editable cell - table.setSelectionModel(new ForceSelectionSelectionModel()); - table.setSelectionBackground(null); - table.setSelectionForeground(Color.BLACK); +// table.setSelectionModel(new ForceSelectionSelectionModel()); +// table.setSelectionBackground(null); +// table.setSelectionForeground(Color.BLACK); +// +//// table.setSortable(context.isValidationMode()); +// table.setSortable(false); -// table.setSortable(context.isValidationMode()); - table.setSortable(false); +// table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); - table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); - final Action moveToNextEditableCell = new MoveToNextEditableCellAction(table); final Action moveToPreviousEditableCell = new MoveToPreviousEditableCellAction(table); final Action moveToPreviousRowEditableCell = new MoveToPreviousRowEditableAction(table); @@ -704,29 +731,59 @@ SwingUtil.scrollToTableSelection(table); - table.getModel().addTableModelListener(new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { - switch (e.getType()) { - case TableModelEvent.INSERT: +// table.getModel().addTableModelListener(new TableModelListener() { +// @Override +// public void tableChanged(TableModelEvent e) { +// switch (e.getType()) { +// case TableModelEvent.INSERT: +// +// // auto select new added line +// table.getSelectionModel().setSelectionInterval(e.getFirstRow(), e.getFirstRow()); +// Rectangle rect = table.getCellRect(e.getFirstRow(), 0, true); +// table.scrollRectToVisible(rect); +// break; +// +// case TableModelEvent.DELETE: +// case TableModelEvent.UPDATE: +// +// // auto select first line ? +// if (table.getSelectedRow() < 0 && table.getRowCount() > 0) { +// table.getSelectionModel().setSelectionInterval(0, 0); +// } +// break; +// } +// } +// }); + } - // auto select new added line - table.getSelectionModel().setSelectionInterval(e.getFirstRow(), e.getFirstRow()); - Rectangle rect = table.getCellRect(e.getFirstRow(), 0, true); - table.scrollRectToVisible(rect); - break; + protected void updateObservationTable(Route route, boolean scrollToFirst) { - case TableModelEvent.DELETE: - case TableModelEvent.UPDATE: + FlightUIModel model = ui.getFlightUIModel(); - // auto select first line ? - if (table.getSelectedRow() < 0 && table.getRowCount() > 0) { - table.getSelectionModel().setSelectionInterval(0, 0); - } - break; + Iterable<Observation> observations = + Observations.filterInRoute(model.getObservations(), route, model.getRoutes(), true); + + if (Iterables.isEmpty(observations)) { + // nothing to do + + } else { + + int firstIndex = -1; + int lastIndex = -1; + for (Observation observation : observations) { + int index = model.indexOfObservations(observation); + if (firstIndex == -1 || firstIndex > index) { + firstIndex = index; } + if (lastIndex == -1 || lastIndex < index) { + lastIndex = index; + } } - }); + ui.getObservationTableModel().fireTableRowsUpdated(firstIndex, lastIndex); + if (scrollToFirst) { + ui.getObservationTable().scrollRowToVisible(firstIndex); + } + } } private PropertyChangeListener observationUpdateListener = new PropertyChangeListener() { @@ -740,7 +797,6 @@ if (FlightUIModel.PROPERTY_ROUTE_EDIT_BEAN.equals(evt.getPropertyName())) { - Route oldValue = (Route) evt.getOldValue(); if (oldValue != null) { updateObservationTable(oldValue, false); @@ -750,46 +806,45 @@ updateObservationTable(newValue, true); } - } else { + } else if (ui.getFlightUIModel().sizeObservations() > 0) { ui.getObservationTableModel().fireTableRowsUpdated( 0, ui.getFlightUIModel().sizeObservations() - 1); } + } + }; + private static class ObservationPositionCellRenderer implements TableCellRenderer { -// if (selectedRow != -1) { -// ui.getObservationTable().scrollRowToVisible(selectedRow); -// ui.getObservationTable().setRowSelectionInterval(selectedRow, selectedRow); -// } + protected TableCellRenderer delegate; + + protected Decorator<Position> decorator; + + protected ObservationTableModel model; + + public ObservationPositionCellRenderer(TableCellRenderer delegate, + UIDecoratorService decoratorService, + ObservationTableModel model) { + this.delegate = delegate; + this.decorator = decoratorService.getDecoratorByType(Position.class); + this.model = model; } - }; - protected void updateObservationTable(Route route, boolean scrollToFirst) { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { - FlightUIModel model = ui.getFlightUIModel(); + Observation observation = model.getBean(row); - Iterable<Observation> observations = - Observations.filterInRoute(model.getObservations(), route, model.getRoutes(), true); + Route route = Routes.findWithObservation(model.getFlightUIModel().getRoutes(), observation, true); - if (Iterables.isEmpty(observations)) { - // nothing to do - } else { + ObserverPosition observerPosition = route.getObserverPositionByPosition(observation.getPosition()); - int firstIndex = -1; - int lastIndex = -1; - for (Observation observation : observations) { - int index = model.indexOfObservations(observation); - if (firstIndex == -1 || firstIndex > index) { - firstIndex = index; - } - if (lastIndex == -1 || lastIndex < index) { - lastIndex = index; - } + String newValue = decorator.toString(observation.getPosition()); + if (observerPosition != null && observerPosition.getObserver() != null) { + newValue += " (" + observerPosition.getObserver().getInitials() + ")"; } - ui.getObservationTableModel().fireTableRowsUpdated(firstIndex, lastIndex); - if (scrollToFirst) { - ui.getObservationTable().scrollRowToVisible(firstIndex); - } + + return delegate.getTableCellRendererComponent(table, newValue, isSelected, hasFocus, row, column); } } Deleted: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ForceSelectionSelectionModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ForceSelectionSelectionModel.java 2012-08-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ForceSelectionSelectionModel.java 2012-08-29 14:43:17 UTC (rev 491) @@ -1,59 +0,0 @@ -/* - * #%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% - */ - -package fr.ulr.sammoa.ui.swing.observations; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.swing.DefaultListSelectionModel; - -/** - * Surcharge de modele de selection par default pour empecher la deselection - * de la dernière ligne et pour qu'il y est toujours une ligne selectionnée. - * - * @author echatellier - */ -public class ForceSelectionSelectionModel extends DefaultListSelectionModel { - - private static final Logger logger = - LoggerFactory.getLogger(ForceSelectionSelectionModel.class); - - private static final long serialVersionUID = 1L; - - @Override - public int getSelectionMode() { - return SINGLE_SELECTION; - } - - @Override - public void removeSelectionInterval(int index0, int index1) { - // don't do anything - if (logger.isDebugEnabled()) { - logger.debug("don't remove selection interval ({}, {})", - index0, index1); - } - } -} Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ObservationTableModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ObservationTableModel.java 2012-08-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ObservationTableModel.java 2012-08-29 14:43:17 UTC (rev 491) @@ -29,8 +29,7 @@ import fr.ulr.sammoa.persistence.Flight; import fr.ulr.sammoa.persistence.Observation; import fr.ulr.sammoa.persistence.ObservationStatus; -import fr.ulr.sammoa.persistence.Observer; -import fr.ulr.sammoa.persistence.ObserverPosition; +import fr.ulr.sammoa.persistence.Position; import fr.ulr.sammoa.persistence.Region; import fr.ulr.sammoa.persistence.Species; import fr.ulr.sammoa.persistence.SpeciesImpl; @@ -127,15 +126,15 @@ return cell; } + public FlightUIModel getFlightUIModel() { + return flightUIModel; + } + public enum ObservationColumn { OBSERVATION_NUMBER(false, int.class, Observation.PROPERTY_OBSERVATION_NUMBER), OBSERVATION_TIME(false, Date.class, Observation.PROPERTY_OBSERVATION_TIME), - OBSERVER(false, String.class, - Observation.PROPERTY_OBSERVER_POSITION, - ObserverPosition.PROPERTY_OBSERVER, - Observer.PROPERTY_INITIALS - ), + POSITION(true, Position.class, Observation.PROPERTY_POSITION), POD_SIZE(true, int.class, Observation.PROPERTY_POD_SIZE), SPECIES(true, String.class, Observation.PROPERTY_SPECIES, Species.PROPERTY_CODE) { @Override Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/RouteTableModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/RouteTableModel.java 2012-08-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/RouteTableModel.java 2012-08-29 14:43:17 UTC (rev 491) @@ -144,10 +144,11 @@ Transect transect = transectFlight.getTransect(); - // retrieve the index of the transectFlight in the flight - int index = model.getFlight().getTransectFlightIndex(transectFlight); +// int index = model.getFlight().getTransectFlightIndex(transectFlight); +// result = transect.getName() + " (" + index + ")"; - result = transect.getName() + " (" + index + ")"; + int crossingNumber = transectFlight.getCrossingNumber(); + result = transect.getName() + " (" + crossingNumber + ")"; } else { result = null; 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-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/TableDataChangeListener.java 2012-08-29 14:43:17 UTC (rev 491) @@ -49,10 +49,13 @@ protected AbstractTableModel tableModel; + protected int firstEditableColumn; + public TableDataChangeListener(JXTable table, - AbstractTableModel tableModel) { + int firstEditableColumn) { this.table = table; - this.tableModel = tableModel; + this.tableModel = (AbstractTableModel) table.getModel(); + this.firstEditableColumn = firstEditableColumn; } @Override @@ -91,10 +94,10 @@ } else { tableModel.fireTableRowsInserted(rowIndex, rowIndex); - int columnIndex = getFirstEditableColumn(rowIndex); - if (columnIndex != NO_COLUMN_INDEX_TO_EDIT_ON_INSERT) { - table.changeSelection(rowIndex, columnIndex, false, false); - table.editCellAt(rowIndex, columnIndex); +// int columnIndex = getFirstEditableColumn(rowIndex); + if (firstEditableColumn != NO_COLUMN_INDEX_TO_EDIT_ON_INSERT) { + table.changeSelection(rowIndex, firstEditableColumn, false, false); + table.editCellAt(rowIndex, firstEditableColumn); } } @@ -123,16 +126,16 @@ } } } - - protected int getFirstEditableColumn(int rowIndex) { - for (int columnIndex = 0; columnIndex < tableModel.getColumnCount(); columnIndex++) { - - boolean editable = tableModel.isCellEditable(rowIndex, columnIndex); - - if (editable) { - return columnIndex; - } - } - return NO_COLUMN_INDEX_TO_EDIT_ON_INSERT; - } +// +// protected int getFirstEditableColumn(int rowIndex) { +// for (int columnIndex = 0; columnIndex < tableModel.getColumnCount(); columnIndex++) { +// +// boolean editable = tableModel.isCellEditable(rowIndex, columnIndex); +// +// if (editable) { +// return columnIndex; +// } +// } +// return NO_COLUMN_INDEX_TO_EDIT_ON_INSERT; +// } } Modified: trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-29 14:38:16 UTC (rev 490) +++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-29 14:43:17 UTC (rev 491) @@ -182,12 +182,12 @@ sammoa.observations.observationTable.column.observationStatus.tip=Status sammoa.observations.observationTable.column.observationTime=Time sammoa.observations.observationTable.column.observationTime.tip=Time -sammoa.observations.observationTable.column.observer=Obs -sammoa.observations.observationTable.column.observer.tip=Obs sammoa.observations.observationTable.column.photo=Photo sammoa.observations.observationTable.column.photo.tip=Photo sammoa.observations.observationTable.column.podSize=Pod size sammoa.observations.observationTable.column.podSize.tip=Pod size +sammoa.observations.observationTable.column.position=Pos +sammoa.observations.observationTable.column.position.tip=Position sammoa.observations.observationTable.column.species=Species sammoa.observations.observationTable.column.species.tip=Species sammoa.observations.observationTable.column.swimDir=Swim dir