*/
package eu.etaxonomy.taxeditor.preference;
+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.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 eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
/**
* @since 28 Jan 2019
*
*/
-public class FactualDataPreference extends CdmPreferencePage {
+public class FactualDataPreference extends CdmPreferencePage implements SelectionListener{
+
+ protected Boolean isShowModifier;
+
+ protected Combo comboShowModifier;
+ protected CdmPreference pref = null;
+ Button allowOverrideButton;
+
+ protected boolean allowOverride;
+ private boolean isOverride = true;
+
+ protected Boolean isShowModifierFreeText;
+
+ protected Combo comboShowModifierFreeText;
+ protected CdmPreference prefFreeText = null;
+ Button allowOverrideFreeTextButton;
+
+ protected boolean allowOverrideFreeText;
+ private boolean isOverrideFreeText = true;
+
+
+ @Override
+ public void init() {
+ super.init();
+
+
+ }
/**
* {@inheritDoc}
*/
@Override
protected Control createContents(Composite parent) {
- noDefaultAndApplyButton();
- return null;
+ getValues();
+
+ Composite composite = createComposite(parent);
+ Label description = new Label(composite, SWT.NULL);
+ description.setText(Messages.FactualData_description);
+
+ comboShowModifier = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowModifier, Messages.FactualData_showModifier, isAdminPreference);
+ comboShowModifier.addSelectionListener(this);
+ if (this.isAdminPreference){
+ allowOverrideButton = createAllowOverrideButton(composite);
+ allowOverrideButton.setSelection(allowOverride);
+ allowOverrideButton.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ allowOverride = !allowOverride;
+ setApply(true);
+ }
+ });
+ }
+ int index = 0;
+ if(isShowModifier==null){
+ comboShowModifier.select(0);
+ } else{
+ for (String itemLabel : comboShowModifier.getItems()){
+ if (itemLabel.startsWith(this.SHOW) && isShowModifier){
+ comboShowModifier.select(index);
+ break;
+ }
+ if (itemLabel.startsWith(DO_NOT_SHOW) && !isShowModifier){
+ comboShowModifier.select(index);
+ break;
+ }
+ index++;
+ }
+ }
+ if (!isAdminPreference){
+ comboShowModifier.setEnabled(allowOverride);
+ }
+
+ comboShowModifierFreeText = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowModifierFreeText, Messages.FactualData_showModifier_FreeText, isAdminPreference);
+ comboShowModifierFreeText.addSelectionListener(this);
+ if (this.isAdminPreference){
+ allowOverrideFreeTextButton = createAllowOverrideButton(composite);
+ allowOverrideFreeTextButton.setSelection(allowOverrideFreeText);
+ allowOverrideFreeTextButton.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ allowOverrideFreeText = !allowOverrideFreeText;
+ setApply(true);
+ }
+ });
+ }
+ index = 0;
+ if(isShowModifierFreeText==null){
+ comboShowModifierFreeText.select(0);
+ } else{
+ for (String itemLabel : comboShowModifierFreeText.getItems()){
+ if (itemLabel.startsWith(this.SHOW) && isShowModifierFreeText){
+ comboShowModifierFreeText.select(index);
+ break;
+ }
+ if (itemLabel.startsWith(DO_NOT_SHOW) && !isShowModifierFreeText){
+ comboShowModifierFreeText.select(index);
+ break;
+ }
+ index++;
+ }
+ }
+ if (!isAdminPreference){
+ comboShowModifierFreeText.setEnabled(allowOverrideFreeText);
+ }
+ return composite;
+
+ }
+
+
+ @Override
+ public boolean performOk() {
+ if (isApply()){
+ if (isShowModifier != null){
+ PreferencesUtil.setStringValue(PreferencePredicate.ShowModifier.getKey(), Boolean.toString(isShowModifier));
+ PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifier.getKey()), true);
+
+ }else{
+ PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifier.getKey()), false);
+ }
+ if (isShowModifierFreeText != null){
+ PreferencesUtil.setStringValue(PreferencePredicate.ShowModifierFreeText.getKey(), Boolean.toString(isShowModifierFreeText));
+ PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifierFreeText.getKey()), true);
+
+ }else{
+ PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifierFreeText.getKey()), false);
+ }
+
+ }
+ return true;
+ }
+
+ @Override
+ public void getValues(){
+ // get modifier values
+ pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.ShowModifier);
+ if (pref == null){
+ pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.ShowModifier, PreferencePredicate.ShowModifier.getDefaultValue().toString());
+ }
+ allowOverride = pref.isAllowOverride();
+ isShowModifier = null;
+ String showModifierString = PreferencesUtil.getStringValue(PreferencePredicate.ShowModifier.getKey(), true);
+ if (showModifierString != null){
+ isShowModifier = Boolean.valueOf(showModifierString);
+ }
+
+ isOverride = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifier.getKey()));
+ if (!isOverride){
+ isShowModifier = null;
+ }
+
+ //get modifier freetext values
+ prefFreeText = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.ShowModifierFreeText);
+ if (prefFreeText == null){
+ prefFreeText = CdmPreference.NewTaxEditorInstance(PreferencePredicate.ShowModifierFreeText, PreferencePredicate.ShowModifierFreeText.getDefaultValue().toString());
+ }
+ allowOverrideFreeText = prefFreeText.isAllowOverride();
+ isShowModifierFreeText = null;
+ String showModifierStringFreeText = PreferencesUtil.getStringValue(PreferencePredicate.ShowModifierFreeText.getKey(), true);
+ if (showModifierStringFreeText != null){
+ isShowModifierFreeText = Boolean.valueOf(showModifierStringFreeText);
+ }
+
+ isOverrideFreeText = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowModifierFreeText.getKey()));
+ if (!isOverrideFreeText){
+ isShowModifierFreeText = null;
+ }
+
}
+ @Override
+ protected void performDefaults() {
+ isShowModifier = null;
+ allowOverride = true;
+
+ comboShowModifier.select(0);
+ if (isAdminPreference){
+ allowOverrideButton.setSelection(allowOverride);
+ }
+
+ isShowModifierFreeText = null;
+ allowOverrideFreeText = true;
+
+ comboShowModifierFreeText.select(0);
+ if (isAdminPreference){
+ allowOverrideFreeTextButton.setSelection(allowOverrideFreeText);
+ }
+
+ setApply(true);
+ super.performDefaults();
+ }
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (e.getSource().equals(this.comboShowModifier)) {
+ String text = comboShowModifier.getText();
+ if (text.startsWith(Messages.Preference_Use_Default)){
+ isOverride = false;
+ isShowModifier = null;
+
+ }else if (text.equals(SHOW)){
+ isShowModifier = true;
+ isOverride = true;
+ }else{
+ isShowModifier = false;
+ isOverride = true;
+ }
+
+ }
+
+ if (e.getSource().equals(this.comboShowModifierFreeText)) {
+ String text = comboShowModifierFreeText.getText();
+ if (text.startsWith(Messages.Preference_Use_Default)){
+ isOverrideFreeText = false;
+ isShowModifierFreeText = null;
+
+ }else if (text.equals(SHOW)){
+ isShowModifierFreeText = true;
+ isOverrideFreeText = true;
+ }else{
+ isShowModifierFreeText = false;
+ isOverrideFreeText = true;
+ }
+
+ }
+ setApply(true);
+
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+
+
+
+ }
+
+
}