| /*=============================================================================# |
| # 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; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| |
| public class LabelStack { |
| |
| |
| private final List<String> labels= new ArrayList<>(8); |
| |
| |
| public LabelStack() { |
| } |
| |
| public LabelStack(final String label) { |
| this.labels.add(label); |
| } |
| |
| public LabelStack(final String... labels) { |
| for (final String label : labels) { |
| this.labels.add(label); |
| } |
| } |
| |
| |
| /** |
| * Adds a label to the bottom of the label stack. |
| * @param label |
| */ |
| public void addLabel(final String label) { |
| if (!this.labels.contains(label)){ |
| this.labels.add(label); |
| } |
| } |
| |
| /** |
| * Adds a label to the top of the label stack. |
| * @param label |
| */ |
| public void addLabelOnTop(final String label) { |
| final int idx= this.labels.indexOf(label); |
| if (idx == 0) { |
| return; |
| } |
| else if (idx > 0) { |
| this.labels.remove(idx); |
| } |
| this.labels.add(0, label); |
| } |
| |
| public void removeLabel(final String label) { |
| this.labels.remove(label); |
| } |
| |
| |
| public List<String> getLabels() { |
| return this.labels; |
| } |
| |
| public boolean hasLabel(final String label) { |
| return this.labels.contains(label); |
| } |
| |
| |
| @Override |
| public int hashCode() { |
| return this.labels.hashCode(); |
| } |
| |
| @Override |
| public boolean equals(final Object obj) { |
| if (this == obj) { |
| return true; |
| } |
| if (!(obj instanceof LabelStack)) { |
| return false; |
| } |
| final LabelStack other= (LabelStack) obj; |
| return this.labels.equals(other.labels); |
| } |
| |
| @Override |
| public String toString() { |
| return this.labels.toString(); |
| } |
| |
| } |