@Override public void run() { if (results != null) { for (LabResult result : results) { final LabResult lockingResult = result; AcquireLockBlockingUi.aquireAndRun( lockingResult, new ILockHandler() { @Override public void lockFailed() { // do nothing } @Override public void lockAcquired() { EditLabResultDialog dialog = new EditLabResultDialog(viewer.getControl().getShell(), lockingResult); if (dialog.open() == Window.OK) { ElexisEventDispatcher.reload(LabResult.class); } } }); } } else if (orders != null) { for (LabOrder order : orders) { ILabResult result = order.getLabResult(); if (result == null) { result = order.createResult(); result.setTransmissionTime(new TimeTool()); } final LabResult lockingResult = (LabResult) result; final LabOrder lockingOrder = order; AcquireLockBlockingUi.aquireAndRun( lockingResult, new ILockHandler() { @Override public void lockFailed() { // do nothing } @Override public void lockAcquired() { EditLabResultDialog dialog = new EditLabResultDialog(viewer.getControl().getShell(), lockingResult); if (dialog.open() == Window.OK) { lockingOrder.setState(State.DONE); ElexisEventDispatcher.reload(LabResult.class); } } }); } } }
@Override public boolean isEnabled() { if (results != null) { for (LabResult result : results) { if (result.getItem() != null) { if (result.getItem().getTyp() == LabItemTyp.DOCUMENT || result.getItem().getTyp() == LabItemTyp.FORMULA) { return false; } } } } else if (orders != null) { for (LabOrder order : orders) { if (order.getLabItem() != null) { if (order.getLabItem().getTyp() == LabItemTyp.DOCUMENT || order.getLabItem().getTyp() == LabItemTyp.FORMULA) { return false; } } } } return super.isEnabled(); }