/******************************************************************************* * Copyright (c) 2007-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.preferences.inputs; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import ch.rgw.tools.StringTool; public class ComboFieldEditor extends FieldEditor { Combo combo; String[] values; public Combo getCombo(){ return combo; } public ComboFieldEditor(String preferenceName, String title, String[] values, Composite parent){ init(preferenceName, title); this.values = values; createControl(parent); } @Override protected void adjustForNumColumns(int numColumns){ GridData fd = (GridData) combo.getLayoutData(); fd.horizontalSpan = numColumns - 1; } @Override protected void doFillIntoGrid(Composite parent, int numColumns){ getLabelControl(parent); if (combo == null) { combo = new Combo(parent, SWT.NONE); combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); combo.setItems(values); } } @Override protected void doLoad(){ if (combo != null) { String value = getPreferenceStore().getString(getPreferenceName()); // int idx=StringTool.getIndex(values, value); combo.setText(value); // combo.select(idx); } } @Override protected void doLoadDefault(){ if (combo != null) { String value = getPreferenceStore().getDefaultString(getPreferenceName()); int idx = StringTool.getIndex(values, value); combo.select(idx); } // valueChanged(); } @Override protected void doStore(){ getPreferenceStore().setValue(getPreferenceName(), combo.getText()); } @Override public int getNumberOfControls(){ return 2; } }