/******************************************************************************* * Copyright (c) 2005-2009, 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.core.ui.views.artikel; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.ui.ISaveablePart2; import org.eclipse.ui.part.ViewPart; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.data.util.Extensions; import ch.elexis.core.ui.actions.GlobalActions; import ch.elexis.core.ui.commands.EditEigenartikelUi; import ch.elexis.core.ui.constants.ExtensionPointConstantsUi; import ch.elexis.core.ui.util.SWTHelper; import ch.elexis.core.ui.util.viewers.CommonViewer; import ch.elexis.core.ui.util.viewers.ViewerConfigurer; import ch.elexis.core.ui.views.codesystems.CodeSelectorFactory; import ch.elexis.core.ui.views.provider.StockEntryLabelProvider; import ch.elexis.data.PersistentObject; import ch.elexis.data.StockEntry; import ch.rgw.tools.ExHandler; public class ArtikelSelektor extends ViewPart implements ISaveablePart2 { public ArtikelSelektor(){} public static final String ID = "ch.elexis.ArtikelSelektor"; //$NON-NLS-1$ CTabFolder ctab; TableViewer tv; @Override public void createPartControl(final Composite parent){ parent.setLayout(new GridLayout()); ctab = new CTabFolder(parent, SWT.NONE); ctab.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true)); java.util.List<IConfigurationElement> list = Extensions.getExtensions(ExtensionPointConstantsUi.VERRECHNUNGSCODE); //$NON-NLS-1$ ctab.addSelectionListener(new TabSelectionListener()); for (IConfigurationElement ice : list) { if ("Artikel".equals(ice.getName())) { //$NON-NLS-1$ try { CodeSelectorFactory cs = (CodeSelectorFactory) ice .createExecutableExtension(ExtensionPointConstantsUi.VERRECHNUNGSCODE_CSF); CTabItem ci = new CTabItem(ctab, SWT.NONE); ci.setText(cs.getCodeSystemName()); ci.setData("csf", cs); //$NON-NLS-1$ } catch (Exception ex) { ExHandler.handle(ex); } } } CTabItem ci = new CTabItem(ctab, SWT.NONE); Composite c = new Composite(ctab, SWT.NONE); c.setLayout(new GridLayout()); ci.setControl(c); ci.setText(Messages.ArtikelSelector_stockArticles); Table table = new Table(c, SWT.SIMPLE | SWT.V_SCROLL); table.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true)); tv = new TableViewer(table); tv.setContentProvider(new IStructuredContentProvider() { public Object[] getElements(final Object inputElement){ return CoreHub.getStockService().getAllStockEntries().toArray(); } public void dispose(){} public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput){} }); tv.setLabelProvider(new StockEntryLabelProvider() { @Override public String getColumnText(Object element, int columnIndex){ StockEntry se = (StockEntry) element; String ret = se.getArticle().getName(); Integer amount = CoreHub.getStockService().getCumulatedStockForArticle(se.getArticle()); if (amount != null) { ret += " (" + Integer.toString(amount) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ } return ret; } }); tv.setInput(this); } @Override public void setFocus(){ // TODO Automatisch erstellter Methoden-Stub } @Override public void dispose(){ } // class LagerLabelProvider extends DefaultLabelProvider implements ITableLabelProvider { // // @Override // public Image getColumnImage(final Object element, final int columnIndex){ // if (element instanceof Artikel) { // return null; // } else { // return Images.IMG_ACHTUNG.getImage(); // } // } // // @Override // public String getColumnText(final Object element, final int columnIndex){ // if (element instanceof Artikel) { // Artikel art = (Artikel) element; // Availability availability = CoreHub.getStockService().getCumulatedAvailabilityForArticle(art); // String ret = art.getInternalName(); // if (availability!=null) { // ret += " (" + availability.toString() + ")"; //$NON-NLS-1$ //$NON-NLS-2$ // } // return ret; // } // return super.getColumnText(element, columnIndex); // } // // } /* * Die folgenden 6 Methoden implementieren das Interface ISaveablePart2 Wir benötigen das * Interface nur, um das Schliessen einer View zu verhindern, wenn die Perspektive fixiert ist. * Gibt es da keine einfachere Methode? */ public int promptToSaveOnClose(){ return GlobalActions.fixLayoutAction.isChecked() ? ISaveablePart2.CANCEL : ISaveablePart2.NO; } public void doSave(final IProgressMonitor monitor){ /* leer */} public void doSaveAs(){ /* leer */} public boolean isDirty(){ return true; } public boolean isSaveAsAllowed(){ return false; } public boolean isSaveOnCloseNeeded(){ return true; } private class TabSelectionListener extends SelectionAdapter { @Override public void widgetSelected(SelectionEvent e){ CTabItem top = ctab.getSelection(); if (top != null) { if (top.getControl() == null) { CommonViewer cv = new CommonViewer(); CodeSelectorFactory cs = (CodeSelectorFactory) top.getData("csf"); //$NON-NLS-1$ ViewerConfigurer vc = cs.createViewerConfigurer(cv); Composite c = new Composite(ctab, SWT.NONE); c.setLayout(new GridLayout()); cv.create(vc, c, SWT.V_SCROLL, getViewSite()); top.setControl(c); top.setData(cv); cv.addDoubleClickListener(new CommonViewer.DoubleClickListener() { public void doubleClicked(final PersistentObject obj, final CommonViewer cv){ EditEigenartikelUi.executeWithParams(obj); } }); vc.getContentProvider().startListening(); } } } } }