/* * Copyright (C) 2008 Google Inc. * * 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.google.inject.grapher.graphviz; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import com.google.inject.grapher.NodeId; import java.util.List; import java.util.Map; /** * Data object to encapsulate the attributes of Graphviz nodes that we're interested in drawing. * * @author phopkins@gmail.com (Pete Hopkins) */ public class GraphvizNode { private final NodeId nodeId; private NodeStyle style = NodeStyle.SOLID; private NodeShape shape = NodeShape.BOX; private String title = ""; private Map<Integer, String> subtitles = Maps.newTreeMap(); private String headerTextColor = "#000000"; private String headerBackgroundColor = "#ffffff"; private String identifier; /** {@link Map} from port ID to field title */ private Map<String, String> fields = Maps.newLinkedHashMap(); /** @since 4.0 */ public GraphvizNode(NodeId nodeId) { this.nodeId = nodeId; } /** @since 4.0 */ public NodeId getNodeId() { return nodeId; } public NodeShape getShape() { return shape; } public void setShape(NodeShape shape) { this.shape = shape; } public NodeStyle getStyle() { return style; } public void setStyle(NodeStyle style) { this.style = style; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public List<String> getSubtitles() { return ImmutableList.copyOf(subtitles.values()); } public void addSubtitle(int position, String subtitle) { this.subtitles.put(position, subtitle); } public String getHeaderTextColor() { return headerTextColor; } public void setHeaderTextColor(String headerTextColor) { this.headerTextColor = headerTextColor; } public String getHeaderBackgroundColor() { return headerBackgroundColor; } public void setHeaderBackgroundColor(String headerBackgroundColor) { this.headerBackgroundColor = headerBackgroundColor; } public void addField(String portId, String title) { fields.put(portId, title); } public Map<String, String> getFields() { return ImmutableMap.copyOf(fields); } /** @since 4.0 */ public String getIdentifier() { return identifier; } /** @since 4.0 */ public void setIdentifier(String identifier) { this.identifier = identifier; } }