/* * Copyright (C) 2012 The Android Open Source Project * * 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 com.motorola.studio.android.emulator.core.emulationui; import java.util.HashSet; import java.util.Set; /** * DESCRIPTION: * This class represents a node in the tree presented in a emulation view * * RESPONSIBILITY: * Guarantee the tree structure by maintaining the parent/child relationship * * COLABORATORS: * None. * * USAGE: * A class should construct an instance of this class whenever it wishes * to add a node to an emulation view tree */ public class EmuViewerNode { /** * The parent node of this node */ private final EmuViewerNode parent; /** * An id that identifies the node type. * The id meaning is defined by the user */ private final String nodeId; /** * The error message to use as the node label * If <code>null</code>, use regular label resolution */ private String errorMessage = null; /** * A set containing all children of this node */ private final Set<EmuViewerNode> children = new HashSet<EmuViewerNode>(); /** * Constructor. * * @param parent The parent node of this node * @param nodeId An id that identifies the node type */ public EmuViewerNode(EmuViewerNode parent, String nodeId) { this.parent = parent; this.nodeId = nodeId; } /** * Retrieves the node's parent * * @return The parent node */ public EmuViewerNode getParent() { return parent; } /** * Retrieves the id of this node. The id meaning is defined by the class user * * @return The id of this node */ public String getNodeId() { return nodeId; } /** * Adds a new child to this node * * @param child The child to be added to the node */ public void addChild(EmuViewerNode child) { children.add(child); } /** * Retrieves all this node's children * * @return A set containing all children of this node */ public Set<EmuViewerNode> getChildren() { return children; } /** * Sets an error message to display as the node label. * If <code>null</code>, the regular label resolution is used * * @param errorMessage An error message to display or <code>null</code> if it is * desired to have regular label resolution for this node */ public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } /** * Tests if this node has an error message assigned * * @return True if an error message was assigned; false otherwise */ public boolean hasErrorMessage() { return errorMessage != null; } /** * Retrieves the error message assigned to this node * * @return The error message, or <code>null</code> if no error message was assigned */ public String getErrorMessage() { return errorMessage; } /** * @see java.lang.Object#toString() */ @Override public String toString() { // For generic/intermediate nodes use the node id itself return getNodeId(); } }