controlBar.getRemoteNodePA(), RemoteNodeType.GATE_ACCESS_ON,
RS.IMG_GATE_ON, RS.IMG_GATE_OFF);
controlBar.addHelpTextTrigger(gateToggleSwitchView, RS.rbLabel(KEY.GATE_ACCESS_DESC));
final Label gateCtrlHeader = createLabel(KEY.GATE_STATE);
final ImageView gateToggleImgView = RS.imgView(RS.IMG_GATE_CLOSED);
final Button gateToggleBtn = new Button();
gateToggleBtn.setCursor(Cursor.HAND);
gateToggleBtn.setGraphic(gateToggleImgView);
controlBar.addHelpTextTrigger(gateToggleBtn, RS.rbLabel(KEY.GATE_TOGGLE_DESC));
gateToggleBtn.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(final MouseEvent event) {
if (GuiUtil.isPrimaryPress(event)) {
gateToggleBtn.setDisable(true);
if (controlBar.createCommandService(Command.GATE_TOGGLE_OPEN_CLOSE, true) == null) {
gateToggleBtn.setDisable(false);
}
}
}
});
controlBar.getSensorReadingsView().sensorReadingsProperty().addListener(
new ChangeListener<RemoteNodeReading>() {
@Override
public void changed(final ObservableValue<? extends RemoteNodeReading> observable,
final RemoteNodeReading oldValue, final RemoteNodeReading newValue) {
// when a command is sent to a remote node to open/close a gate a response for
// sensor readings will be sent to the host where the gate state update is captured
gateToggleImgView.setImage(newValue != null && newValue.getGateState() == 1 ?
RS.img(RS.IMG_GATE_OPENED) : RS.img(RS.IMG_GATE_CLOSED));
gateToggleBtn.setDisable(false);
}
});
final Parent cell = createCell(gateHeader, gateToggleSwitchView,
gateCtrlHeader, gateToggleBtn);