diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff) |
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java')
-rw-r--r-- | framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java new file mode 100644 index 00000000..b4e43304 --- /dev/null +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/ui/topo/LinkHighlight.java @@ -0,0 +1,147 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.onosproject.ui.topo; + +import java.util.Collections; +import java.util.Set; +import java.util.TreeSet; + +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * Denotes the highlighting to be applied to a link. + * {@link Flavor} is a closed set of NO-, PRIMARY-, or SECONDARY- highlighting. + * {@link Mod} is an open ended set of additional modifications (CSS classes) + * that may also be applied. + * Note that {@link #MOD_OPTICAL} and {@link #MOD_ANIMATED} are pre-defined mods. + * Label text may be set, which will also be displayed on the link. + */ +public class LinkHighlight extends AbstractHighlight { + + private static final String PLAIN = "plain"; + private static final String PRIMARY = "primary"; + private static final String SECONDARY = "secondary"; + private static final String EMPTY = ""; + private static final String SPACE = " "; + + private final Flavor flavor; + private final Set<Mod> mods = new TreeSet<>(); + private String label = EMPTY; + + /** + * Constructs a link highlight entity. + * + * @param linkId the link identifier + * @param flavor the highlight flavor + */ + public LinkHighlight(String linkId, Flavor flavor) { + super(TopoElementType.LINK, linkId); + this.flavor = checkNotNull(flavor); + } + + /** + * Adds a highlighting modification to this link highlight. + * + * @param mod mod to be added + * @return self, for chaining + */ + public LinkHighlight addMod(Mod mod) { + mods.add(checkNotNull(mod)); + return this; + } + + /** + * Adds a label to be displayed on the link. + * + * @param label the label text + * @return self, for chaining + */ + public LinkHighlight setLabel(String label) { + this.label = label == null ? EMPTY : label; + return this; + } + + /** + * Returns the highlight flavor. + * + * @return highlight flavor + */ + public Flavor flavor() { + return flavor; + } + + /** + * Returns the highlight modifications. + * + * @return highlight modifications + */ + public Set<Mod> mods() { + return Collections.unmodifiableSet(mods); + } + + /** + * Generates the CSS classes string from the {@link #flavor} and + * any optional {@link #mods}. + * + * @return CSS classes string + */ + public String cssClasses() { + StringBuilder sb = new StringBuilder(flavor.toString()); + mods.forEach(m -> sb.append(SPACE).append(m)); + return sb.toString(); + } + + /** + * Returns the label text. + * + * @return label text + */ + public String label() { + return label; + } + + /** + * Link highlighting flavor. + */ + public enum Flavor { + NO_HIGHLIGHT(PLAIN), + PRIMARY_HIGHLIGHT(PRIMARY), + SECONDARY_HIGHLIGHT(SECONDARY); + + private String cssName; + + Flavor(String s) { + cssName = s; + } + + @Override + public String toString() { + return cssName; + } + } + + /** + * Denotes a link to be tagged as an optical link. + */ + public static final Mod MOD_OPTICAL = new Mod("optical"); + + /** + * Denotes a link to be tagged with animated traffic ("marching ants"). + */ + public static final Mod MOD_ANIMATED = new Mod("animated"); +} |