1/* 2 * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24package com.sun.hotspot.igv.data; 25 26import java.util.ArrayList; 27import java.util.List; 28 29/** 30 * 31 * @author Thomas Wuerthinger 32 */ 33public class GraphDocument extends Properties.Entity implements ChangedEventProvider<GraphDocument>, Folder { 34 35 private List<FolderElement> elements; 36 private ChangedEvent<GraphDocument> changedEvent; 37 38 public GraphDocument() { 39 elements = new ArrayList<>(); 40 changedEvent = new ChangedEvent<>(this); 41 } 42 43 public void clear() { 44 elements.clear(); 45 getChangedEvent().fire(); 46 } 47 48 @Override 49 public ChangedEvent<GraphDocument> getChangedEvent() { 50 return changedEvent; 51 } 52 53 public void addGraphDocument(GraphDocument document) { 54 if (document != this) { 55 for (FolderElement e : document.elements) { 56 e.setParent(this); 57 this.addElement(e); 58 } 59 document.clear(); 60 } 61 getChangedEvent().fire(); 62 } 63 64 @Override 65 public String toString() { 66 StringBuilder sb = new StringBuilder(); 67 68 sb.append("GraphDocument: ").append(getProperties().toString()).append(" \n\n"); 69 for (FolderElement g : getElements()) { 70 sb.append(g.toString()); 71 sb.append("\n\n"); 72 } 73 74 return sb.toString(); 75 } 76 77 @Override 78 public List<? extends FolderElement> getElements() { 79 return elements; 80 } 81 82 @Override 83 public void removeElement(FolderElement element) { 84 if (elements.remove(element)) { 85 getChangedEvent().fire(); 86 } 87 } 88 89 @Override 90 public void addElement(FolderElement element) { 91 elements.add(element); 92 getChangedEvent().fire(); 93 } 94} 95