/******************************************************************************* * Copyright (c) 2012 Martin Reiterer. * 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: * Christian Behon - refactor from e3 to e4 ******************************************************************************/ package org.eclipselabs.e4.tapiji.translator.preference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.e4.core.di.annotations.Creatable; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipselabs.e4.tapiji.logger.Log; @Creatable @Singleton public class StoreInstanceState { private static final String STORE_DISPLAYED_LOCALES = "STORE/DISPLAYED_LOCALES"; private static final String STORE_REFERENCE_LANGUAGE = "STORE/REFERENCE_LANGUAGE"; private static final String STORE_MATCHING_PRECISION = "STORE/MATCHING_PRECISION"; private static final String STORE_SEARCH_STRING = "STORE/SEARCH_STRING"; private static final String STORE_GLOSSARY_FILE = "STORE/GLOSSARY_FILE"; private static final String STORE_EDIT_MODE = "STORE/EDIT_MODE"; private static final String STORE_FUZZY_MATCHING_MODE = "STORE/FUZZY_MODE"; private static final String STORE_SORT_COLUMN_INDEX = "STORE/SORT_COLUMN_INDEX"; private static final String STORE_SORT_ORDER = "STORE/SORT_ORDER"; private static final String TAG = StoreInstanceState.class.getSimpleName(); private Map<String, String> persistedState; @Inject public StoreInstanceState(final MPart part) { persistedState = part.getPersistedState(); } public void setEditMode(final boolean isEditMode) { persistedState.put(STORE_EDIT_MODE, String.valueOf(isEditMode)); } public void setColumnIndex(final int columnIndex) { persistedState.put(STORE_SORT_COLUMN_INDEX, String.valueOf(columnIndex)); } public int getColumnIndex() { if (persistedState.containsKey(STORE_SORT_COLUMN_INDEX)) { return Integer.valueOf(persistedState.get(STORE_SORT_COLUMN_INDEX)); } else { return 0; } } public void setSortOrder(final boolean sortOrder) { persistedState.put(STORE_SORT_ORDER, String.valueOf(sortOrder)); } public boolean getSortOrder() { if (persistedState.containsKey(STORE_SORT_ORDER)) { return Boolean.valueOf(persistedState.get(STORE_SORT_ORDER)); } else { return false; } } public boolean isEditMode() { if (persistedState.containsKey(STORE_EDIT_MODE)) { return Boolean.valueOf(persistedState.get(STORE_EDIT_MODE)); } else { return false; } } public void setFuzzyMode(final boolean isFuzzyMode) { persistedState.put(STORE_FUZZY_MATCHING_MODE, String.valueOf(isFuzzyMode)); } public boolean isFuzzyMode() { if (persistedState.containsKey(STORE_FUZZY_MATCHING_MODE)) { return Boolean.valueOf(persistedState.get(STORE_FUZZY_MATCHING_MODE)); } else { return false; } } public void setGlossaryFile(final String file) { persistedState.put(STORE_GLOSSARY_FILE, file); } public String getGlossaryFile() { if (persistedState.containsKey(STORE_GLOSSARY_FILE)) { return persistedState.get(STORE_GLOSSARY_FILE); } else { return ""; } } public void setSearchValue(final String searchValue) { persistedState.put(STORE_SEARCH_STRING, searchValue); } public String getSearchValue() { if (persistedState.containsKey(STORE_SEARCH_STRING)) { return persistedState.get(STORE_SEARCH_STRING); } else { return ""; } } public void setMatchingPrecision(final float matchingPrecision) { persistedState.put(STORE_MATCHING_PRECISION, String.valueOf(matchingPrecision)); } public float getMatchingPrecision() { if (persistedState.containsKey(STORE_MATCHING_PRECISION)) { return Float.valueOf(persistedState.get(STORE_MATCHING_PRECISION)); } else { return 0f; } } public void setReferenceLanguage(final String referenceLanguage) { persistedState.put(STORE_REFERENCE_LANGUAGE, referenceLanguage); } public String getReferenceLanguage() { if (persistedState.containsKey(STORE_REFERENCE_LANGUAGE)) { return persistedState.get(STORE_REFERENCE_LANGUAGE); } else { return ""; } } public void hideLocale(final String locale) { final List<String> hiddenLocales = getHiddenLocales(); if (!hiddenLocales.contains(locale)) { hiddenLocales.add(locale); persistedState.put(STORE_DISPLAYED_LOCALES, hiddenLocales.toString().replaceAll("\\[|\\]", "")); } } public void showLocale(final String locale) { final List<String> hiddenLocales = getHiddenLocales(); if (hiddenLocales.contains(locale)) { hiddenLocales.remove(locale); persistedState.put(STORE_DISPLAYED_LOCALES, hiddenLocales.toString().replaceAll("\\[|\\]", "")); } } public List<String> getHiddenLocales() { final String locales = persistedState.get(STORE_DISPLAYED_LOCALES); if (locales != null) { Log.d("asdas", locales.toString()); return new ArrayList<String>(Arrays.asList(locales.split("\\s*,\\s*"))); } else { return new ArrayList<String>(); } } @Override public String toString() { return "StoreInstanceState [persistedState=" + persistedState + "]"; } }