1 /** 2 * Copyright (C) 2008 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.inject.grapher.graphviz; 18 19 import com.google.common.collect.ImmutableList; 20 import com.google.common.collect.ImmutableMap; 21 import com.google.common.collect.Maps; 22 import com.google.inject.grapher.NodeId; 23 24 import java.util.List; 25 import java.util.Map; 26 27 /** 28 * Data object to encapsulate the attributes of Graphviz nodes that we're 29 * interested in drawing. 30 * 31 * @author phopkins@gmail.com (Pete Hopkins) 32 */ 33 public class GraphvizNode { 34 private final NodeId nodeId; 35 36 private NodeStyle style = NodeStyle.SOLID; 37 private NodeShape shape = NodeShape.BOX; 38 39 private String title = ""; 40 private Map<Integer, String> subtitles = Maps.newTreeMap(); 41 42 private String headerTextColor = "#000000"; 43 private String headerBackgroundColor = "#ffffff"; 44 45 private String identifier; 46 47 /** {@link Map} from port ID to field title */ 48 private Map<String, String> fields = Maps.newLinkedHashMap(); 49 50 /** @since 4.0 */ GraphvizNode(NodeId nodeId)51 public GraphvizNode(NodeId nodeId) { 52 this.nodeId = nodeId; 53 } 54 55 /** @since 4.0 */ getNodeId()56 public NodeId getNodeId() { 57 return nodeId; 58 } 59 getShape()60 public NodeShape getShape() { 61 return shape; 62 } 63 setShape(NodeShape shape)64 public void setShape(NodeShape shape) { 65 this.shape = shape; 66 } 67 getStyle()68 public NodeStyle getStyle() { 69 return style; 70 } 71 setStyle(NodeStyle style)72 public void setStyle(NodeStyle style) { 73 this.style = style; 74 } 75 getTitle()76 public String getTitle() { 77 return title; 78 } 79 setTitle(String title)80 public void setTitle(String title) { 81 this.title = title; 82 } 83 getSubtitles()84 public List<String> getSubtitles() { 85 return ImmutableList.copyOf(subtitles.values()); 86 } 87 addSubtitle(int position, String subtitle)88 public void addSubtitle(int position, String subtitle) { 89 this.subtitles.put(position, subtitle); 90 } 91 getHeaderTextColor()92 public String getHeaderTextColor() { 93 return headerTextColor; 94 } 95 setHeaderTextColor(String headerTextColor)96 public void setHeaderTextColor(String headerTextColor) { 97 this.headerTextColor = headerTextColor; 98 } 99 getHeaderBackgroundColor()100 public String getHeaderBackgroundColor() { 101 return headerBackgroundColor; 102 } 103 setHeaderBackgroundColor(String headerBackgroundColor)104 public void setHeaderBackgroundColor(String headerBackgroundColor) { 105 this.headerBackgroundColor = headerBackgroundColor; 106 } 107 addField(String portId, String title)108 public void addField(String portId, String title) { 109 fields.put(portId, title); 110 } 111 getFields()112 public Map<String, String> getFields() { 113 return ImmutableMap.copyOf(fields); 114 } 115 116 /** @since 4.0 */ getIdentifier()117 public String getIdentifier() { 118 return identifier; 119 } 120 121 /** @since 4.0 */ setIdentifier(String identifier)122 public void setIdentifier(String identifier) { 123 this.identifier = identifier; 124 } 125 } 126