/******************************************************************************************************************* * * If the ControlPanel was moved to the alternate position, restore it. * ******************************************************************************************************************/ private void eventuallyMoveBackControlPanel() { if (currentPosition.equals(DEFAULT_CONTROL_PANEL_POSITION)) { presentation.renderControlPanelAt(DEFAULT_CONTROL_PANEL_POSITION); presentation.renderEmptyCellAt(ALTERNATE_CONTROL_PANEL_POSITION); } }
/******************************************************************************************************************* * * If the current position is the one where the ControlPanel is rendered, move it to the alternate position. * ******************************************************************************************************************/ private void eventuallyMoveOutControlPanel() { if (currentPosition.equals(DEFAULT_CONTROL_PANEL_POSITION)) { presentation.renderControlPanelAt(ALTERNATE_CONTROL_PANEL_POSITION); } }
@Override public void run() { presentation.renderWhiteCellAt(currentPosition); presentation.showMeasureInProgress(); new MeasurementRequest().sendLater(MEASUREMENT_DELAY, MILLISECONDS); } });
inOrder.verify(presentation).bind(any(Action.class), any(Action.class)); inOrder.verify(presentation).setGridSize(eq(3), eq(3)); inOrder.verify(action("Continue")).setEnabled(eq(false)); inOrder.verify(action("Cancel")).setEnabled(eq(false)); inOrder.verify(presentation).showUp(any(GraphicsDevice.class)); inOrder.verify(presentation).renderControlPanelAt( eq(xy(0, 0))); inOrder.verify(presentation).renderSensorPlacementInvitationCellAt(eq(xy(1, 1))); inOrder.verify(action("Continue")).setEnabled(eq(true)); inOrder.verify(action("Cancel")).setEnabled(eq(true)); inOrder.verify(action("Continue")).actionPerformed(any(ActionEvent.class)); inOrder.verify(presentation).hideInvitationToOperateOnTheSensor(); inOrder.verify(action("Continue")).setEnabled(eq(false)); inOrder.verify(action("Cancel")).setEnabled(eq(false)); inOrder.verify(presentation).renderWhiteCellAt( eq(xy(1, 1))); inOrder.verify(presentation).showMeasureInProgress(); inOrder.verify(presentation).hideMeasureInProgress(); inOrder.verify(presentation).renderMeasurementCellAt( eq(xy(1, 1)), eq("Luminance: 56 cd/m\u00b2"), eq("White point: 2111 K")); inOrder.verify(presentation).renderSensorPlacementInvitationCellAt(eq(xy(0, 0))); inOrder.verify(presentation).renderControlPanelAt( eq(xy(0, 1))); inOrder.verify(action("Continue")).setEnabled(eq(true)); inOrder.verify(action("Cancel")).setEnabled(eq(true)); inOrder.verify(action("Continue")).actionPerformed(any(ActionEvent.class)); inOrder.verify(presentation).hideInvitationToOperateOnTheSensor(); inOrder.verify(action("Continue")).setEnabled(eq(false)); inOrder.verify(action("Cancel")).setEnabled(eq(false)); inOrder.verify(presentation).renderWhiteCellAt( eq(xy(0, 0))); inOrder.verify(presentation).showMeasureInProgress();
/******************************************************************************************************************* * * ******************************************************************************************************************/ 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); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ @Override @Nonnull protected UniformityCheckMeasurementPresentation createPresentation() { final UniformityCheckMeasurementPresentationProvider presentationProvider = new NetBeansUniformityCheckMeasurementPresentationProvider(); final UniformityCheckMeasurementPresentation presentation = spy(new Wrapper(presentationProvider.getPresentation())); doAnswer(clickContinue).when(presentation).renderSensorPlacementInvitationCellAt(any(Position.class)); return presentation; } }
/******************************************************************************************************************* * * ******************************************************************************************************************/ @BeforeMethod public void setupFixture() { TestLoggerSetup.setupLogging(getClass()); messageVerifier = new MessageVerifier(); messageVerifier.initialize(); actions = new ActionsTestHelper(); presentation = createPresentation(); actions.register(presentation).on().bind(any(Action.class), any(Action.class)); presentationBuilder = mock(UniformityCheckMeasurementPresentationProvider.class); doReturn(presentation).when(presentationBuilder).getPresentation(); MockLookup.setInstances(presentationBuilder); inOrder = inOrder(concatenate(presentation, actions.getVerifiers())); testActivator = new TestActivator(); testActivator.activate(); }
/******************************************************************************************************************* * * 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 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 onCancel (final @ListensTo @Nonnull CancelMessage message) { log.info("onCancel()"); cancelAction.setEnabled(false); if (suspensionToken != null) { collaborationPendingUserIntervention.resumeAndDie(suspensionToken); suspensionToken = null; collaborationPendingUserIntervention = NULL_COLLABORATION; } presentation.dismiss(); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ private void onConfirmMeasurement (final @ListensTo @Nonnull ConfirmMeasurementMessage message) { log.info("onConfirmMeasurement()"); presentation.hideInvitationToOperateOnTheSensor(); continueAction.setEnabled(false); cancelAction.setEnabled(false); collaborationPendingUserIntervention.resume(suspensionToken, new Runnable() { @Override public void run() { presentation.renderWhiteCellAt(currentPosition); presentation.showMeasureInProgress(); new MeasurementRequest().sendLater(MEASUREMENT_DELAY, MILLISECONDS); } }); suspensionToken = null; collaborationPendingUserIntervention = NULL_COLLABORATION; }
inOrder.verify(presentation).bind(any(Action.class), any(Action.class)); inOrder.verify(presentation).setGridSize(eq(3), eq(3)); inOrder.verify(action("Continue")).setEnabled(eq(false)); inOrder.verify(action("Cancel")).setEnabled(eq(false)); inOrder.verify(presentation).showUp(any(GraphicsDevice.class)); // TODO: verify the graphicdevice inOrder.verify(presentation).renderControlPanelAt( eq(xy(0, 0))); inOrder.verify(presentation).renderSensorPlacementInvitationCellAt(eq(xy(1, 1))); inOrder.verify(action("Continue")).setEnabled(eq(true)); inOrder.verify(action("Cancel")).setEnabled(eq(true)); inOrder.verify(action("Continue")).actionPerformed(any(ActionEvent.class)); inOrder.verify(presentation).hideInvitationToOperateOnTheSensor(); inOrder.verify(action("Continue")).setEnabled(eq(false)); inOrder.verify(action("Cancel")).setEnabled(eq(false)); inOrder.verify(presentation).renderWhiteCellAt( eq(xy(1, 1))); inOrder.verify(presentation).showMeasureInProgress(); inOrder.verify(presentation).hideMeasureInProgress(); inOrder.verify(presentation).renderMeasurementCellAt( eq(xy(1, 1)), eq("Luminance: 56 cd/m\u00b2"), eq("White point: 2111 K")); inOrder.verify(presentation).renderSensorPlacementInvitationCellAt(eq(xy(0, 0))); inOrder.verify(presentation).renderControlPanelAt( eq(xy(0, 1))); inOrder.verify(action("Continue")).setEnabled(eq(true)); inOrder.verify(action("Cancel")).setEnabled(eq(true)); inOrder.verify(action("Continue")).actionPerformed(any(ActionEvent.class)); inOrder.verify(presentation).hideInvitationToOperateOnTheSensor(); inOrder.verify(action("Continue")).setEnabled(eq(false)); inOrder.verify(action("Cancel")).setEnabled(eq(false)); inOrder.verify(presentation).renderWhiteCellAt( eq(xy(0, 0))); inOrder.verify(presentation).showMeasureInProgress();
/******************************************************************************************************************* * * ******************************************************************************************************************/ @Override @Nonnull protected UniformityCheckMeasurementPresentation createPresentation() { final UniformityCheckMeasurementPresentationProvider presentationProvider = new NetBeansUniformityCheckMeasurementPresentationProvider(); final UniformityCheckMeasurementPresentation presentation = spy(new Wrapper(presentationProvider.getPresentation())); doAnswer(clickContinue).when(presentation).renderSensorPlacementInvitationCellAt(any(Position.class)); return presentation; } }
/******************************************************************************************************************* * * ******************************************************************************************************************/ @BeforeMethod public void setupFixture() { TestLoggerSetup.setupLogging(getClass()); messageVerifier = new MessageVerifier(); messageVerifier.initialize(); actions = new ActionsTestHelper(); presentation = createPresentation(); actions.register(presentation).on().bind(any(Action.class), any(Action.class)); presentationBuilder = mock(UniformityCheckMeasurementPresentationProvider.class); doReturn(presentation).when(presentationBuilder).getPresentation(); MockLookup.setInstances(presentationBuilder); inOrder = inOrder(concatenate(presentation, actions.getVerifiers())); testActivator = new TestActivator(); testActivator.activate(); }
@Override @Nonnull protected UniformityCheckMeasurementPresentation createPresentation() { final UniformityCheckMeasurementPresentation presentation = mock(UniformityCheckMeasurementPresentation.class); doAnswer(actions.performActionWithDelay("Continue", 500)).when(presentation).renderSensorPlacementInvitationCellAt(any(Position.class)); return presentation; } }
/******************************************************************************************************************* * * 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); } }
@Override @Nonnull protected UniformityCheckMeasurementPresentation createPresentation() { final UniformityCheckMeasurementPresentation presentation = mock(UniformityCheckMeasurementPresentation.class); doAnswer(actions.performActionWithDelay("Continue", 500)).when(presentation).renderSensorPlacementInvitationCellAt(any(Position.class)); return presentation; } }