/*
 * Copyright 2016-present 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;

/**
 * Defines constants for standard glyph identifiers.
 * <p>
 * See also:
 * <ul>
 *     <li>
 *         https://wiki.onosproject.org/display/ONOS/UI+Service+-+GlyphService
 *     </li>
 * </ul>
 */
public final class GlyphConstants {
    public static final String BIRD = "bird";

    public static final String UNKNOWN = "m_unknown";
    public static final String QUERY = "query";
    public static final String NODE = "node";

    public static final String SWITCH = "m_switch";
    public static final String ROUTER = "router";
    public static final String ROADM = "m_roadm";
    public static final String OTN = "otn";
    public static final String ROADM_OTN = "roadm_otn";
    public static final String FIBER_SWITCH = "fiber_switch";
    public static final String MICROWAVE = "microwave";

    public static final String ENDSTATION = "m_endstation";
    public static final String BGP_SPEAKER = "bgpSpeaker";

    public static final String CHAIN = "chain";
    public static final String CROWN = "crown";
    public static final String LOCK = "lock";
    public static final String TOPO = "topo";
    public static final String REFRESH = "refresh";
    public static final String GARBAGE = "garbage";

    public static final String FLOW_TABLE = "flowTable";
    public static final String PORT_TABLE = "portTable";
    public static final String GROUP_TABLE = "groupTable";
    public static final String METER_TABLE = "meterTable";

    public static final String SUMMARY = "m_summary";
    public static final String DETAILS = "m_details";
    public static final String PORTS = "m_ports";
    public static final String MAP = "m_map";
    public static final String CYCLE_LABELS = "m_cycleLabels";
    public static final String OBLIQUE = "m_oblique";
    public static final String FILTERS = "m_filters";
    public static final String RESET_ZOOM = "m_resetZoom";
    public static final String RELATED_INTENTS = "m_relatedIntents";
    public static final String NEXT = "m_next";
    public static final String PREV = "m_prev";
    public static final String INTENT_TRAFFIC = "m_intentTraffic";
    public static final String ALL_TRAFFIC = "m_allTraffic";
    public static final String FLOWS = "m_flows";
    public static final String EQ_MASTER = "m_eqMaster";

    public static final String UI_ATTACHED = "m_uiAttached";
    public static final String CHECK_MARK = "checkMark";
    public static final String X_MARK = "m_xMark";
    public static final String TRIANGLE_UP = "triangleUp";
    public static final String TRIANGLE_DOWN = "triangleDown";
    public static final String PLUS = "plus";
    public static final String MINUS = "minus";
    public static final String PLAY = "play";
    public static final String STOP = "stop";

    public static final String CLOUD = "m_cloud";

    // non-instantiable
    private GlyphConstants() {
    }
}
