package at.medevit.ch.artikelstamm.elexis.common.ui.preferences; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.PojoProperties; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.jface.databinding.swt.WidgetProperties; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import at.medevit.atc_codes.ATCCodeLanguageConstants; import at.medevit.ch.artikelstamm.elexis.common.preference.MargePreference; import at.medevit.ch.artikelstamm.elexis.common.preference.PreferenceConstants; import at.medevit.ch.artikelstamm.marge.Marge; import at.medevit.ch.artikelstamm.ui.DetailComposite; import org.eclipse.swt.widgets.Button; import ch.elexis.core.data.activator.CoreHub; public class ArtikelstammPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { public Marge margeA, margeB, margeC; private DataBindingContext m_bindingContext; private Text textMargeAstartIntervall; private Text textMargeAendIntervall; private Text textMargeAAddition; private Text textMargeBstartIntervall; private Text textMargeBendIntervall; private Text textMargeBAddition; private Text textMargeCstartIntervall; private Text textMargeCendIntervall; private Text textMargeCAddition; private Label lblInfo; private Composite compAtcLang; private Label lblShowAtcCodesIn; private Button btnRadioGerman; private Button btnRadioEnglish; private Button btnShowArticlePrice; private Button btnShowEmptyATCCodeGroups; /** * Create the preference page. */ public ArtikelstammPreferencePage(){ Marge[] marges = MargePreference.getMarges(); // currently hard-coded as set to 3, quick and dirty solution margeA = marges[0]; margeB = marges[1]; margeC = marges[2]; } /** * Create contents of the preference page. * * @param parent */ @Override public Control createContents(Composite parent){ Composite container = new Composite(parent, SWT.NULL); container.setLayout(new GridLayout(1, false)); Group margeGroup = new Group(container, SWT.None); margeGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); margeGroup.setLayout(new GridLayout(5, false)); margeGroup.setText("Margen-Konfiguration"); Label lblMargeA = new Label(margeGroup, SWT.NONE); lblMargeA.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblMargeA.setText("Marge"); textMargeAstartIntervall = new Text(margeGroup, SWT.BORDER); textMargeAstartIntervall.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1)); textMargeAstartIntervall.setMessage("von CHF"); textMargeAendIntervall = new Text(margeGroup, SWT.BORDER); textMargeAendIntervall.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); textMargeAendIntervall.setMessage("bis CHF"); Label lblZuschlag = new Label(margeGroup, SWT.NONE); lblZuschlag.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblZuschlag.setText("Zuschlag in %"); textMargeAAddition = new Text(margeGroup, SWT.BORDER); textMargeAAddition.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); textMargeAAddition.setMessage("%"); // -- Label lblMargeB = new Label(margeGroup, SWT.NONE); lblMargeB.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblMargeB.setText("Marge"); textMargeBstartIntervall = new Text(margeGroup, SWT.BORDER); textMargeBstartIntervall.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1)); textMargeBstartIntervall.setMessage("von CHF"); textMargeBendIntervall = new Text(margeGroup, SWT.BORDER); textMargeBendIntervall.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); textMargeBendIntervall.setMessage("bis CHF"); Label lblBZuschlag = new Label(margeGroup, SWT.NONE); lblBZuschlag.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblBZuschlag.setText("Zuschlag in %"); textMargeBAddition = new Text(margeGroup, SWT.BORDER); textMargeBAddition.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); textMargeBAddition.setMessage("%"); // -- Label lblMargeC = new Label(margeGroup, SWT.NONE); lblMargeC.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblMargeC.setText("Marge"); textMargeCstartIntervall = new Text(margeGroup, SWT.BORDER); textMargeCstartIntervall.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1)); textMargeCstartIntervall.setMessage("von CHF"); textMargeCendIntervall = new Text(margeGroup, SWT.BORDER); textMargeCendIntervall.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); textMargeCendIntervall.setMessage("bis CHF"); Label lblCZuschlag = new Label(margeGroup, SWT.NONE); lblCZuschlag.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblCZuschlag.setText("Zuschlag in %"); textMargeCAddition = new Text(margeGroup, SWT.BORDER); textMargeCAddition.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); textMargeCAddition.setMessage("%"); lblInfo = new Label(margeGroup, SWT.NONE); lblInfo.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 5, 1)); lblInfo.setText("Ein 0 Eintrag bewirkt das Ignorieren einer Zeile."); compAtcLang = new Composite(container, SWT.NONE); compAtcLang.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); compAtcLang.setLayout(new GridLayout(3, false)); lblShowAtcCodesIn = new Label(compAtcLang, SWT.NONE); lblShowAtcCodesIn.setText("ATC Codes darstellen in"); SelectionListener radioSl = new LanguageRadioSelectionButtonListener(); btnRadioGerman = new Button(compAtcLang, SWT.RADIO); btnRadioGerman.setData(ATCCodeLanguageConstants.ATC_LANGUAGE_VAL_GERMAN); btnRadioGerman.setText("deutsch"); btnRadioGerman.addSelectionListener(radioSl); btnRadioEnglish = new Button(compAtcLang, SWT.RADIO); btnRadioEnglish.setData(ATCCodeLanguageConstants.ATC_LANGUAGE_VAL_ENGLISH); btnRadioEnglish.setText("english"); btnRadioEnglish.addSelectionListener(radioSl); btnShowArticlePrice = new Button(container, SWT.CHECK); btnShowArticlePrice.setSelection(CoreHub.globalCfg.get(PreferenceConstants.PREF_SHOW_PRICE_IN_OVERVIEW, true)); btnShowArticlePrice.setText("Artikelpreis in Übersicht anzeigen"); btnShowArticlePrice.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e){ CoreHub.globalCfg.set(PreferenceConstants.PREF_SHOW_PRICE_IN_OVERVIEW, btnShowArticlePrice.getSelection()); } }); btnShowEmptyATCCodeGroups = new Button(container, SWT.CHECK); btnShowEmptyATCCodeGroups.setText("ATC Gruppen ohne verfügbare Artikel anzeigen"); btnShowEmptyATCCodeGroups.setSelection(CoreHub.globalCfg.get(PreferenceConstants.PREF_SHOW_ATC_GROUPS_WITHOUT_ARTICLES, true)); btnShowEmptyATCCodeGroups.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e){ CoreHub.globalCfg.set(PreferenceConstants.PREF_SHOW_ATC_GROUPS_WITHOUT_ARTICLES, btnShowEmptyATCCodeGroups.getSelection()); } }); String language = CoreHub.globalCfg.get(PreferenceConstants.PREF_ATC_CODE_LANGUAGE, ATCCodeLanguageConstants.ATC_LANGUAGE_VAL_GERMAN); if (language.equals(ATCCodeLanguageConstants.ATC_LANGUAGE_VAL_GERMAN)) { btnRadioGerman.setSelection(true); } else { btnRadioEnglish.setSelection(true); } m_bindingContext = initDataBindings(); return container; } private class LanguageRadioSelectionButtonListener extends SelectionAdapter { @Override public void widgetSelected(SelectionEvent e){ if (!((Button) e.widget).getSelection()) return; CoreHub.globalCfg.set(PreferenceConstants.PREF_ATC_CODE_LANGUAGE, (String) e.widget.getData()); DetailComposite.setPrefAtcLanguage((String) e.widget.getData()); } } /** * Initialize the preference page. */ public void init(IWorkbench workbench){ // Initialize the preference page } protected DataBindingContext initDataBindings(){ DataBindingContext bindingContext = new DataBindingContext(); // IObservableValue observeTextTextMargeAstartIntervallObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeAstartIntervall); IObservableValue startIntervalMargeAObserveValue = PojoProperties.value("startInterval").observe(margeA); bindingContext.bindValue(observeTextTextMargeAstartIntervallObserveWidget, startIntervalMargeAObserveValue, null, null); // IObservableValue observeTextTextMargeAendIntervallObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeAendIntervall); IObservableValue endIntervalMargeAObserveValue = PojoProperties.value("endInterval").observe(margeA); bindingContext.bindValue(observeTextTextMargeAendIntervallObserveWidget, endIntervalMargeAObserveValue, null, null); // IObservableValue observeTextTextMargeAAdditionObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeAAddition); IObservableValue additionMargeAObserveValue = PojoProperties.value("addition").observe(margeA); bindingContext.bindValue(observeTextTextMargeAAdditionObserveWidget, additionMargeAObserveValue, null, null); // IObservableValue observeTextTextMargeBstartIntervallObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeBstartIntervall); IObservableValue startIntervalMargeBObserveValue = PojoProperties.value("startInterval").observe(margeB); bindingContext.bindValue(observeTextTextMargeBstartIntervallObserveWidget, startIntervalMargeBObserveValue, null, null); // IObservableValue observeTextTextMargeBendIntervallObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeBendIntervall); IObservableValue endIntervalMargeBObserveValue = PojoProperties.value("endInterval").observe(margeB); bindingContext.bindValue(observeTextTextMargeBendIntervallObserveWidget, endIntervalMargeBObserveValue, null, null); // IObservableValue observeTextTextMargeBAdditionObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeBAddition); IObservableValue additionMargeBObserveValue = PojoProperties.value("addition").observe(margeB); bindingContext.bindValue(observeTextTextMargeBAdditionObserveWidget, additionMargeBObserveValue, null, null); // IObservableValue observeTextTextMargeCstartIntervallObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeCstartIntervall); IObservableValue startIntervalMargeCObserveValue = PojoProperties.value("startInterval").observe(margeC); bindingContext.bindValue(observeTextTextMargeCstartIntervallObserveWidget, startIntervalMargeCObserveValue, null, null); // IObservableValue observeTextTextMargeCendIntervallObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeCendIntervall); IObservableValue endIntervalMargeCObserveValue = PojoProperties.value("endInterval").observe(margeC); bindingContext.bindValue(observeTextTextMargeCendIntervallObserveWidget, endIntervalMargeCObserveValue, null, null); // IObservableValue observeTextTextMargeCAdditionObserveWidget = WidgetProperties.text(SWT.Modify).observe(textMargeCAddition); IObservableValue additionMargeCObserveValue = PojoProperties.value("addition").observe(margeC); bindingContext.bindValue(observeTextTextMargeCAdditionObserveWidget, additionMargeCObserveValue, null, null); // return bindingContext; } @Override protected void performApply(){ MargePreference.storeMargeConfiguration(); } @Override public boolean performOk(){ performApply(); return super.performOk(); } }