package at.medevit.elexis.inbox.ui.command;
import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.handlers.HandlerUtil;
import at.medevit.elexis.inbox.model.InboxElement;
import at.medevit.elexis.inbox.ui.dialog.MandantSelectorDialog;
import at.medevit.elexis.inbox.ui.part.InboxView;
import at.medevit.elexis.inbox.ui.part.model.PatientInboxElements;
import at.medevit.elexis.inbox.ui.part.provider.InboxElementContentProvider;
import ch.elexis.core.ui.UiDesk;
import ch.elexis.data.Mandant;
public class ChangeMandantCommand extends AbstractHandler implements IHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException{
MandantSelectorDialog msDialog = new MandantSelectorDialog(UiDesk.getTopShell());
if (msDialog.open() == TitleAreaDialog.OK) {
Mandant mandant = msDialog.getSelectedMandant();
IWorkbenchPart part = HandlerUtil.getActivePart(event);
if (part instanceof InboxView) {
InboxView view = (InboxView) part;
CheckboxTreeViewer viewer = view.getCheckboxTreeViewer();
IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
if (selection != null && !selection.isEmpty()) {
List<?> selectionList = selection.toList();
for (Object selObj : selectionList) {
if (selObj instanceof InboxElement) {
InboxElement inboxElement = (InboxElement) selObj;
inboxElement.setMandant(mandant);
refreshView(viewer, inboxElement);
} else if (selObj instanceof PatientInboxElements) {
PatientInboxElements patInboxElements = (PatientInboxElements) selObj;
for (InboxElement inboxElement : patInboxElements.getElements()) {
inboxElement.setMandant(mandant);
}
refreshView(viewer, patInboxElements);
}
}
}
}
}
return null;
}
private void refreshView(CheckboxTreeViewer viewer, PatientInboxElements patInboxElements){
InboxElementContentProvider contentProvider =
(InboxElementContentProvider) viewer.getContentProvider();
contentProvider.refreshElement(patInboxElements);
viewer.refresh(false);
}
private void refreshView(CheckboxTreeViewer viewer, InboxElement inboxElement){
InboxElementContentProvider contentProvider =
(InboxElementContentProvider) viewer.getContentProvider();
contentProvider.refreshElement(inboxElement);
viewer.refresh(false);
}
}