/******************************************************************************************************************* * * Invites the user to properly position the sensor. * ******************************************************************************************************************/ private void inviteToPositionTheSensor (final @Nonnull Collaboration collaboration) { log.info("inviteToPositionTheSensor()"); collaborationPendingUserIntervention = collaboration; suspensionToken = collaborationPendingUserIntervention.suspend(); presentation.renderSensorPlacementInvitationCellAt(currentPosition); eventuallyMoveOutControlPanel(); continueAction.setEnabled(true); cancelAction.setEnabled(true); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ public void onMeasurementsRequest (final @ListensTo @Nonnull UniformityCheckRequest message) { log.info("onMeasurementsRequest({})", message); display = message.getDisplay(); initializeMeasurement(); prepareNextMeasurement(message.getCollaboration()); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ public void onNewMeasurement (final @ListensTo @Nonnull MeasurementMessage message) throws NotFoundException { log.info("onNewMeasurement({})", message); presentation.hideMeasureInProgress(); final XYZColorCoordinates xyzColor = message.getColorCoordinatesSet().find(XYZColorCoordinates.class); // http://www.freelists.org/post/argyllcms/Measuring-whitepoint-and-luminance-with-spotread,1 final UniformityMeasurement measurement = new UniformityMeasurement(message.getDaylightTemperature().getMeasure(), (int)xyzColor.getY()); measurementMapByPosition.put(currentPosition, measurement); presentation.renderMeasurementCellAt(currentPosition, String.format("Luminance: %d cd/m\u00b2", measurement.getLuminance()), String.format("White point: %d K", measurement.getTemperature().getValue())); eventuallyMoveBackControlPanel(); prepareNextMeasurement(message.getCollaboration()); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ public void onSensorOperationInvitation (final @ListensTo @Nonnull SensorOperationInvitationMessage message) { log.info("onSensorOperationInvitation({})", message); presentation.showInvitationToOperateOnTheSensor(message.getInvitation()); presentation.hideMeasureInProgress(); continueAction.setEnabled(true); cancelAction.setEnabled(true); inviteToPositionTheSensor(message.getCollaboration()); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ private void initializeMeasurement() { log.info("initializeMeasurement()"); presentation = presentationBuilder.get().getPresentation(); computePositions(); measurementMapByPosition.clear(); presentation.bind(continueAction, cancelAction); presentation.setGridSize(COLUMNS, ROWS); continueAction.setEnabled(false); cancelAction.setEnabled(false); presentation.showUp(display.getDisplay().getGraphicsDevice()); presentation.renderControlPanelAt(DEFAULT_CONTROL_PANEL_POSITION); }
/******************************************************************************************************************* * * Prepares for the next measurement. * ******************************************************************************************************************/ private void prepareNextMeasurement (final @Nonnull Collaboration collaboration) { log.info("prepareNextMeasurement()"); if (!positionIterator.hasNext()) { presentation.dismiss(); new UniformityMeasurementMessage(new UniformityMeasurements(display, measurementMapByPosition)).send(); } else { currentPosition = positionIterator.next(); inviteToPositionTheSensor(collaboration); } }