blob: b714947be95d393644fd6a3056ced68b4d64ba4c [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2021 Stephan Wahlbrink and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.ecommons.text.ui.presentation;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
@NonNullByDefault
public abstract class BasicTextStyleManager<TAttributes> implements TextStyleManager {
private final Map<String, Token> tokenMap= new HashMap<>();
public BasicTextStyleManager() {
}
/**
* Token access for styles.
*
* @param key id and prefix for preference keys
* @return token with text style attribute
*/
@Override
public IToken getToken(final String key) {
Token token= this.tokenMap.get(key);
if (token == null) {
token= new Token(createTextAttributes(key));
this.tokenMap.put(key, token);
}
return token;
}
protected abstract TAttributes createTextAttributes(String key);
protected void updateTextStyles() {
for (final Map.Entry<String, Token> token : this.tokenMap.entrySet()) {
token.getValue().setData(createTextAttributes(token.getKey()));
}
}
}