/*******************************************************************************
* Copyright (c) 2006-2010, G. Weirich and Elexis
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.base.ch.artikel.views;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.PlatformUI;
import ch.elexis.artikel_ch.data.Medical;
import ch.elexis.core.data.events.ElexisEventDispatcher;
import ch.elexis.core.ui.actions.ScannerEvents;
import ch.elexis.core.ui.text.ElexisText;
import ch.elexis.core.ui.util.IScannerListener;
import ch.elexis.core.ui.util.viewers.CommonViewer;
import ch.elexis.core.ui.util.viewers.DefaultControlFieldProvider;
import ch.elexis.core.ui.views.KonsDetailView;
import ch.elexis.data.Konsultation;
import ch.elexis.data.Query;
public class MedicalControlFieldProvider extends DefaultControlFieldProvider implements
IScannerListener {
public MedicalControlFieldProvider(CommonViewer viewer, String[] flds){
super(viewer, flds);
}
public Composite createControl(final Composite parent){
Composite composite = super.createControl(parent);
for (final ElexisText selector : selectors) {
selector.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e){
if (e.character == SWT.CR) {
String text = selector.getText();
text = text.replaceAll(new Character(SWT.CR).toString(), ""); //$NON-NLS-1$
text = text.replaceAll(new Character(SWT.LF).toString(), ""); //$NON-NLS-1$
text = text.replaceAll(new Character((char) 0).toString(), ""); //$NON-NLS-1$
Event scannerEvent = new Event();
scannerEvent.text = selector.getText();
scannerEvent.widget = selector.getWidget();
scannerInput(scannerEvent);
}
}
});
}
return composite;
}
private KonsDetailView getKonsDetailView(){
IViewReference[] viewReferences =
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.getViewReferences();
for (IViewReference viewRef : viewReferences) {
if (KonsDetailView.ID.equals(viewRef.getId())) {
return (KonsDetailView) viewRef.getPart(false);
}
}
return null;
}
public void scannerInput(Event e){
KonsDetailView detailView = getKonsDetailView();
Text text = null;
if (e.widget instanceof Text) {
text = (Text) e.widget;
}
if (text != null) {
Query<Medical> query = new Query<Medical>(Medical.class);
query.add("EAN", "=", e.text); //$NON-NLS-1$
List<Medical> medicalList = query.execute();
if (medicalList.size() == 0) {
ScannerEvents.beep();
}
for (Medical medical : medicalList) {
Konsultation kons =
(Konsultation) ElexisEventDispatcher.getSelected(Konsultation.class);
if (kons != null) {
detailView.addToVerechnung(medical);
} else {
ScannerEvents.beep();
}
}
text.selectAll();
} else {
ScannerEvents.beep();
}
}
}