/******************************************************************************* * Copyright (c) 2005-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.views; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import ch.elexis.core.ui.actions.ReadOnceTreeLoader; import ch.elexis.core.ui.actions.ToggleVerrechenbarFavoriteAction; import ch.elexis.core.ui.selectors.FieldDescriptor; import ch.elexis.core.ui.selectors.FieldDescriptor.Typ; import ch.elexis.core.ui.util.viewers.CommonViewer; import ch.elexis.core.ui.util.viewers.DefaultLabelProvider; import ch.elexis.core.ui.util.viewers.SelectorPanelProvider; import ch.elexis.core.ui.util.viewers.SimpleWidgetProvider; import ch.elexis.core.ui.util.viewers.ViewerConfigurer; import ch.elexis.core.ui.views.codesystems.CodeSelectorFactory; import ch.elexis.data.PersistentObject; import ch.elexis.data.Query; import ch.elexis.data.TarmedLeistung; public class TarmedCodeSelectorFactory extends CodeSelectorFactory { SelectorPanelProvider slp; ReadOnceTreeLoader tdl; CommonViewer cv; FieldDescriptor<?>[] fields = { new FieldDescriptor<TarmedLeistung>("Ziffer", TarmedLeistung.FLD_CODE, Typ.STRING, null), new FieldDescriptor<TarmedLeistung>("Text", TarmedLeistung.FLD_TEXT, null) }; int eventType = SWT.KeyDown; private ToggleVerrechenbarFavoriteAction tvfa = new ToggleVerrechenbarFavoriteAction(); private ISelectionChangedListener selChangeListener = new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event){ TreeViewer tv = (TreeViewer) event.getSource(); StructuredSelection ss = (StructuredSelection) tv.getSelection(); System.out.println(ss.getFirstElement()); if (ss.isEmpty()) { tvfa.updateSelection(null); return; } PersistentObject o = (PersistentObject) ss.getFirstElement(); tvfa.updateSelection((o.isDragOK()) ? o : null); } }; public TarmedCodeSelectorFactory(){} @Override public ViewerConfigurer createViewerConfigurer(final CommonViewer cv){ this.cv = cv; cv.setSelectionChangedListener(selChangeListener); // add keyListener to search field Listener keyListener = new Listener() { @Override public void handleEvent(Event event){ if (event.type == eventType) { if (event.keyCode == SWT.CR || event.keyCode == SWT.KEYPAD_CR) { slp.fireChangedEvent(); } } } }; for (FieldDescriptor<?> fd : fields) { fd.setAssignedListener(eventType, keyListener); } slp = new TarmedSelectorPanelProvider(cv, fields, true); MenuManager menu = new MenuManager(); menu.add(tvfa); cv.setContextMenu(menu); tdl = new ReadOnceTreeLoader(cv, new Query<TarmedLeistung>(TarmedLeistung.class), "Parent", "ID"); ViewerConfigurer vc = new ViewerConfigurer(tdl, new DefaultLabelProvider(), slp, new ViewerConfigurer.DefaultButtonProvider(), new SimpleWidgetProvider( SimpleWidgetProvider.TYPE_TREE, SWT.NONE, null)); return vc; } @Override public Class getElementClass(){ return TarmedLeistung.class; } @Override public void dispose(){ cv.dispose(); tdl.dispose(); } @Override public String getCodeSystemName(){ return "Tarmed"; //$NON-NLS-1$ } @Override public PersistentObject findElement(String code){ return (PersistentObject) TarmedLeistung.getFromCode(code); } }