blob: a21875e5af9fd914bd29638c29f51e47f8fcc2de [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2012, 2021 Original NatTable authors 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.
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Original NatTable authors and others - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.ecommons.waltable.layer.cell;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class AbstractOverrider implements IConfigLabelAccumulator {
private final Map<Serializable, List<String>> overrides= new HashMap<>();
public void removeOverride(final Serializable key) {
this.overrides.remove(key);
}
public void registerOverrides(final Serializable key, final String...configLabels) {
List<String> list= getOverrides(key);
if (list == null) {
list= new ArrayList<>();
registerOverrides(key, list);
}
for (int i= 0; i < configLabels.length; i++) {
if (list.contains(configLabels[i])) {
continue;
}
list.add(configLabels[i]);
}
}
public void registerOverridesOnTop(final Serializable key, final String...configLabels) {
List<String> list= getOverrides(key);
if (list == null) {
list= new ArrayList<>();
registerOverrides(key, list);
}
for (int i= 0, j= 0; i < configLabels.length; i++) {
final int k= list.indexOf(configLabels);
if (k > j) {
list.remove(k);
}
else if (k >= 0) {
continue;
}
list.add(j++, configLabels[i]);
}
}
public void registerOverrides(final Serializable key, final List<String> configLabels) {
this.overrides.put(key, configLabels);
}
public Map<Serializable, List<String>> getOverrides() {
return this.overrides;
}
public List<String> getOverrides(final Serializable key) {
return this.overrides.get(key);
}
public void addOverrides(final Map<Serializable, List<String>> overrides) {
this.overrides.putAll(overrides);
}
}