/******************************************************************************* * Copyright (c) 2013 itemis AG (http://www.itemis.eu). * 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 ******************************************************************************/ package de.itemis.tooling.terminology.ui.preferences; import javax.inject.Inject; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.xtext.diagnostics.Severity; import de.itemis.tooling.terminology.validation.TerminologyValidationSeverityLevels; public class TerminologyPreferenceBasedValidationSeverityLevels implements TerminologyValidationSeverityLevels, IPropertyChangeListener { private IPreferenceStore prefernces; private Severity onePreferredPerLanguage; private Severity missingPreferredForLanguage; private Severity globalUniquEntryId; private Severity uniqueTerm; private Severity missingDefinition; private Severity entryRefSymmetric; private boolean checkMissingPreferredTermForLanguageWithoutTerms; @Inject public TerminologyPreferenceBasedValidationSeverityLevels(IPreferenceStore store) { prefernces=store; prefernces.addPropertyChangeListener(this); initValues(); } public Severity getOnePreferredTermPerLanguageLevel() { return onePreferredPerLanguage; } public Severity getUniqueEntryIdLevel() { return globalUniquEntryId; } public Severity getUniqueTermLevel() { return uniqueTerm; } public Severity getMissingDefinitionLevel() { return missingDefinition; } public Severity getMissingPreferredTermLevel() { return missingPreferredForLanguage; } public Severity getEntryRefSymmetricLevel() { return entryRefSymmetric; } public boolean checkMissingPreferredTermForLanguageWithoutTerms() { return checkMissingPreferredTermForLanguageWithoutTerms; } public void propertyChange(PropertyChangeEvent event) { if(event.getProperty().contains(".validation.")){ initValues(); } } private void initValues() { globalUniquEntryId=getSeverity(TerminologyPreferenceConstants.VALIDATION_UNIQUE_ENTRY_KEY); onePreferredPerLanguage=getSeverity(TerminologyPreferenceConstants.VALIDATION_PREFTERM_PERLANGUAGE_KEY); missingPreferredForLanguage=getSeverity(TerminologyPreferenceConstants.VALIDATION_MISSING_PREFTERM_KEY); uniqueTerm=getSeverity(TerminologyPreferenceConstants.VALIDATION_UNIQUE_TERM_KEY); missingDefinition=getSeverity(TerminologyPreferenceConstants.VALIDATION_MISSING_DEFINITION_KEY); entryRefSymmetric=getSeverity(TerminologyPreferenceConstants.VALIDATION_ENTRY_REF_SYMMETRIC_KEY); checkMissingPreferredTermForLanguageWithoutTerms=prefernces.getBoolean(TerminologyPreferenceConstants.VALIDATION_PREFTERM_NOLANGUAGE_KEY); } Severity getSeverity(String key){ Severity result=null; String s=prefernces.getString(key); if("info".equals(s)){ result=Severity.INFO; }else if("warn".equals(s)){ result=Severity.WARNING; }else if("error".equals(s)){ result=Severity.ERROR; } return result; } }