package ch.medshare.connect.abacusjunior; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.ui.importer.div.rs232.Connection; import ch.elexis.core.ui.preferences.SettingsPreferenceStore; import ch.elexis.core.ui.util.SWTHelper; public class Preferences extends PreferencePage implements IWorkbenchPreferencePage { private static Logger logger = LoggerFactory.getLogger(Preferences.class); public static final String ABACUSJUNIOR_BASE = "connectors/abacusjunior/"; public static final String PORT = ABACUSJUNIOR_BASE + "port"; public static final String PARAMS = ABACUSJUNIOR_BASE + "params"; public static final String LOG = ABACUSJUNIOR_BASE + "log"; Combo ports; Text speed, data, stop; Button parity, log; public Preferences(){ super(Messages.getString("AbacusJuniorAction.ButtonName")); setPreferenceStore(new SettingsPreferenceStore(CoreHub.localCfg)); } @Override protected Control createContents(final Composite parent){ logger.debug("Start von createContents"); String[] param = CoreHub.localCfg.get(PARAMS, "9600,8,n,1").split(","); Composite ret = new Composite(parent, SWT.NONE); ret.setLayout(new GridLayout(2, false)); ret.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true)); new Label(ret, SWT.NONE).setText(Messages.getString("Preferences.Port")); ports = new Combo(ret, SWT.SINGLE); ports.setItems(Connection.getComPorts()); ports.setText(CoreHub.localCfg.get(PORT, Messages.getString("AbacusJuniorAction.DefaultPort"))); new Label(ret, SWT.NONE).setText(Messages.getString("Preferences.Baud")); speed = new Text(ret, SWT.BORDER); speed.setText(param[0]); new Label(ret, SWT.NONE).setText(Messages.getString("Preferences.Databits")); data = new Text(ret, SWT.BORDER); data.setText(param[1]); new Label(ret, SWT.NONE).setText(Messages.getString("Preferences.Parity")); parity = new Button(ret, SWT.CHECK); parity.setSelection(!param[2].equalsIgnoreCase("n")); new Label(ret, SWT.NONE).setText(Messages.getString("Preferences.Stopbits")); stop = new Text(ret, SWT.BORDER); stop.setText(param[3]); new Label(ret, SWT.NONE).setText(Messages.getString("Preferences.Log")); log = new Button(ret, SWT.CHECK); log.setSelection(CoreHub.localCfg.get(LOG, "n").equalsIgnoreCase("y")); return ret; } public void init(final IWorkbench workbench){ // TODO Auto-generated method stub } @Override public boolean performOk(){ StringBuilder sb = new StringBuilder(); sb.append(speed.getText()).append(",").append(data.getText()).append(",") .append(parity.getSelection() ? "y" : "n").append(",").append(stop.getText()); CoreHub.localCfg.set(PARAMS, sb.toString()); CoreHub.localCfg.set(PORT, ports.getText()); CoreHub.localCfg.set(LOG, log.getSelection() ? "y" : "n"); CoreHub.localCfg.flush(); return super.performOk(); } }