ONOS-1479 -- GUI - augmenting topology view for extensibility: WIP.
Change-Id: I11820a9ff8f446c0d10a0311cee5ce448c15f402
diff --git a/core/api/src/main/java/org/onosproject/ui/topo/ButtonDescriptor.java b/core/api/src/main/java/org/onosproject/ui/topo/ButtonDescriptor.java
deleted file mode 100644
index e797130..0000000
--- a/core/api/src/main/java/org/onosproject/ui/topo/ButtonDescriptor.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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;
-
-/**
- * Designates a descriptor for a button on the topology view panels.
- */
-public class ButtonDescriptor {
-
- private final String id;
- private final String glyphId;
- private final String tooltip;
-
- /**
- * Creates a button descriptor with the given identifier, glyph ID, and
- * tooltip text. To reference a custom glyph defined in the overlay itself,
- * prefix its ID with an asterisk, (e.g. {@code "*myGlyph"}). Alternatively,
- * use one of the {@link TopoConstants.Glyphs predefined constant}.
- *
- * @param id identifier for the button
- * @param glyphId identifier for the glyph
- * @param tooltip tooltip text
- */
- public ButtonDescriptor(String id, String glyphId, String tooltip) {
- this.id = id;
- this.glyphId = glyphId;
- this.tooltip = tooltip;
- }
-
- /**
- * Returns the identifier for this button.
- *
- * @return identifier
- */
- public String id() {
- return id;
- }
-
- /**
- * Returns the glyph identifier for this button.
- *
- * @return glyph identifier
- */
- public String glyphId() {
- return glyphId;
- }
-
- /**
- * Returns the tooltip text for this button.
- *
- * @return tooltip text
- */
- public String tooltip() {
- return tooltip;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- ButtonDescriptor that = (ButtonDescriptor) o;
- return id.equals(that.id);
-
- }
-
- @Override
- public int hashCode() {
- return id.hashCode();
- }
-}
diff --git a/core/api/src/main/java/org/onosproject/ui/topo/ButtonId.java b/core/api/src/main/java/org/onosproject/ui/topo/ButtonId.java
new file mode 100644
index 0000000..ca2eccc
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/topo/ButtonId.java
@@ -0,0 +1,70 @@
+/*
+ * 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 com.google.common.base.MoreObjects;
+
+/**
+ * Designates the identity of a button on the topology view panels.
+ */
+public class ButtonId {
+
+ private final String id;
+
+ /**
+ * Creates a button ID with the given identifier.
+ *
+ * @param id identifier for the button
+ */
+ public ButtonId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * Returns the identifier for this button.
+ *
+ * @return identifier
+ */
+ public String id() {
+ return id;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("id", id()).toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ ButtonId that = (ButtonId) o;
+ return id.equals(that.id);
+ }
+
+ @Override
+ public int hashCode() {
+ return id.hashCode();
+ }
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/topo/PropertyPanel.java b/core/api/src/main/java/org/onosproject/ui/topo/PropertyPanel.java
index 43364ea..121e083 100644
--- a/core/api/src/main/java/org/onosproject/ui/topo/PropertyPanel.java
+++ b/core/api/src/main/java/org/onosproject/ui/topo/PropertyPanel.java
@@ -35,7 +35,7 @@
private String typeId;
private String id;
private List<Prop> properties = new ArrayList<>();
- private List<ButtonDescriptor> buttons = new ArrayList<>();
+ private List<ButtonId> buttons = new ArrayList<>();
/**
* Constructs a property panel model with the given title and
@@ -181,7 +181,7 @@
* @return the button list
*/
// TODO: consider protecting this?
- public List<ButtonDescriptor> buttons() {
+ public List<ButtonId> buttons() {
return buttons;
}
@@ -243,7 +243,7 @@
* @param button button descriptor
* @return self, for chaining
*/
- public PropertyPanel addButton(ButtonDescriptor button) {
+ public PropertyPanel addButton(ButtonId button) {
buttons.add(button);
return this;
}
@@ -254,10 +254,10 @@
* @param descriptors descriptors to remove
* @return self, for chaining
*/
- public PropertyPanel removeButtons(ButtonDescriptor... descriptors) {
- Set<ButtonDescriptor> forRemoval = Sets.newHashSet(descriptors);
- List<ButtonDescriptor> toKeep = new ArrayList<>();
- for (ButtonDescriptor bd: buttons) {
+ public PropertyPanel removeButtons(ButtonId... descriptors) {
+ Set<ButtonId> forRemoval = Sets.newHashSet(descriptors);
+ List<ButtonId> toKeep = new ArrayList<>();
+ for (ButtonId bd: buttons) {
if (!forRemoval.contains(bd)) {
toKeep.add(bd);
}
diff --git a/core/api/src/main/java/org/onosproject/ui/topo/TopoConstants.java b/core/api/src/main/java/org/onosproject/ui/topo/TopoConstants.java
index a48c253..38a8f03 100644
--- a/core/api/src/main/java/org/onosproject/ui/topo/TopoConstants.java
+++ b/core/api/src/main/java/org/onosproject/ui/topo/TopoConstants.java
@@ -108,30 +108,22 @@
public static final String VLAN = "VLAN";
}
- private static final class CoreButton extends ButtonDescriptor {
- private CoreButton(String tag, String glyphId, boolean extra) {
- super("show" + tag + "View",
- glyphId,
- "Show " + tag + " View" + (extra ? " for this Device" : ""));
- }
- }
-
/**
- * Defines constants for core buttons that appear on the topology
+ * Defines identities of core buttons that appear on the topology
* details panel.
*/
public static final class CoreButtons {
- public static final ButtonDescriptor SHOW_DEVICE_VIEW =
- new CoreButton("Device", Glyphs.SWITCH, false);
+ public static final ButtonId SHOW_DEVICE_VIEW =
+ new ButtonId("showDeviceView");
- public static final ButtonDescriptor SHOW_FLOW_VIEW =
- new CoreButton("Flow", Glyphs.FLOW_TABLE, true);
+ public static final ButtonId SHOW_FLOW_VIEW =
+ new ButtonId("showFlowView");
- public static final ButtonDescriptor SHOW_PORT_VIEW =
- new CoreButton("Port", Glyphs.PORT_TABLE, true);
+ public static final ButtonId SHOW_PORT_VIEW =
+ new ButtonId("showPortView");
- public static final ButtonDescriptor SHOW_GROUP_VIEW =
- new CoreButton("Group", Glyphs.GROUP_TABLE, true);
+ public static final ButtonId SHOW_GROUP_VIEW =
+ new ButtonId("showGroupView");
}
}