/******************************************************************************* * Copyright (c) 2009-2010, A. Kaufmann 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: * A. Kaufmann - initial implementation * P. Chaubert - adapted to Messwerte V2 * medshare GmbH - adapted to Messwerte V2.1 in February 2012 * *******************************************************************************/ package com.hilotec.elexis.messwerte.v2.data.typen; import java.text.MessageFormat; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Spinner; import org.eclipse.swt.widgets.Widget; import ch.elexis.core.ui.selectors.ActiveControl; import ch.elexis.core.ui.selectors.SpinnerField; import ch.elexis.core.ui.util.SWTHelper; import ch.rgw.tools.Log; import com.hilotec.elexis.messwerte.v2.data.Messwert; import com.hilotec.elexis.messwerte.v2.data.MesswertBase; /** * @author Antoine Kaufmann */ public class MesswertTypScale extends MesswertBase implements IMesswertTyp { int defVal = 0; /** * Kleinster auswaehlbarer Wert */ int min = 0; /** * Groesster auswaehlbarer Wert */ int max = 0; public MesswertTypScale(String n, String t, String u){ super(n, t, u); } public String erstelleDarstellungswert(Messwert messwert){ return messwert.getWert(); } public String getDefault(Messwert messwert){ Integer retVal = defVal; if (formula != null) { String sWert = evalateFormula(formula, messwert, retVal.toString()); try { retVal = Integer.parseInt(sWert); } catch (Exception e) { log.log(MessageFormat.format(Messages.MesswertTypScale_CastFailure, sWert), Log.ERRORS); } } return retVal.toString(); } public void setDefault(String str){ defVal = Integer.parseInt(str); } /** * Groesster auswaehlbarer Wert setzen */ public void setMax(int m){ max = m; } /** * Kleinster auswaehlbarer Wert setzen */ public void setMin(int m){ min = m; } public Widget createWidget(Composite parent, Messwert messwert){ widget = new Spinner(parent, SWT.NONE); ((Spinner) widget).setMinimum(min); ((Spinner) widget).setMaximum(max); ((Spinner) widget).setSelection(Integer.parseInt(messwert.getWert())); ((Spinner) widget).setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); setShown(true); return widget; } public String getDarstellungswert(String wert){ return wert; } @Override public void saveInput(Messwert messwert){ messwert.setWert(Integer.toString(((Spinner) widget).getSelection())); } @Override public boolean checkInput(Messwert messwert, String pattern){ super.checkInput(messwert, pattern); String value = ((Spinner) widget).getText(); if (value.matches(pattern) || pattern == null) { return true; } return false; } public ActiveControl createControl(Composite parent, Messwert messwert, boolean bEditable){ IMesswertTyp dft = messwert.getTyp(); String labelText = dft.getTitle(); if (!dft.getUnit().equals("")) { //$NON-NLS-1$ labelText += " [" + dft.getUnit() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ } SpinnerField sf = new SpinnerField(parent, 0, labelText, min, max); sf.setText(messwert.getDarstellungswert()); return sf; } @Override public String getActualValue(){ return ((Spinner) widget).getText(); } }