/******************************************************************************* * 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.icpc; import java.util.HashMap; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import ch.elexis.core.ui.util.viewers.CommonViewer; import ch.elexis.core.ui.util.viewers.DefaultControlFieldProvider; import ch.elexis.core.ui.util.viewers.SimpleWidgetProvider; import ch.elexis.core.ui.util.viewers.ViewerConfigurer; import ch.elexis.core.ui.util.viewers.ViewerConfigurer.ICommonViewerContentProvider; import ch.rgw.tools.Tree; public class CodeSelectorFactory extends ch.elexis.core.ui.views.codesystems.CodeSelectorFactory { public CodeSelectorFactory(){ // TODO Auto-generated constructor stub } @Override public ViewerConfigurer createViewerConfigurer(CommonViewer cv){ return new ViewerConfigurer(new IcpcCodeContentProvider(), new IcpcCodeLabelProvider(), new DefaultControlFieldProvider(cv, new String[] { "Text" }), new ViewerConfigurer.DefaultButtonProvider(), new SimpleWidgetProvider( SimpleWidgetProvider.TYPE_TREE, SWT.NONE, null)); } @Override public void dispose(){ // TODO Auto-generated method stub } @Override public String getCodeSystemName(){ return "ICPC"; } @Override public Class getElementClass(){ return IcpcCode.class; } public class IcpcCodeContentProvider implements ICommonViewerContentProvider, ITreeContentProvider { public void startListening(){} public void stopListening(){} public Object[] getElements(Object inputElement){ return IcpcCode.getRoot().getChildren().toArray(); } public void dispose(){} public void inputChanged(Viewer viewer, Object oldInput, Object newInput){} public void changed(HashMap<String, String> values){} public void reorder(String field){} public void selected(){ // nothing to do } public Object[] getChildren(Object parentElement){ if (parentElement instanceof Tree) { Tree t = (Tree) parentElement; return t.getChildren().toArray(); } return null; } public Object getParent(Object element){ if (element instanceof Tree) { Tree t = (Tree) element; return t.getParent(); } return null; } public boolean hasChildren(Object element){ if (element instanceof Tree) { Tree t = (Tree) element; return t.hasChildren(); } return false; } @Override public void init(){ // TODO Auto-generated method stub } } public class IcpcCodeLabelProvider extends LabelProvider { @Override public String getText(Object element){ if (element instanceof Tree) { Tree t = (Tree) element; if (t.contents instanceof String) { return (String) t.contents; } else if (t.contents instanceof IcpcCode) { IcpcCode c = (IcpcCode) t.contents; return c.getLabel(); } } return super.getText(element); } } }