| /********************************************************************** |
| * Copyright (c) 2002 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Common Public License v0.5 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/cpl-v05.html |
| * |
| * Contributors: |
| * IBM - Initial API and implementation |
| **********************************************************************/ |
| package org.eclipse.ui.externaltools.internal.ui; |
| |
| import java.util.*; |
| import java.util.Vector; |
| |
| /** |
| * Object which stores the index and the length of the output for a given |
| * target or task (represented by a string) |
| */ |
| |
| public class OutputStructureElement { |
| |
| private OutputStructureElement parent = null; |
| private ArrayList children; |
| private String name; |
| private int startIndex = 0; |
| private int length = 0; |
| |
| |
| /** |
| * This constructor is intended to be used only by the first element of the structure (the root element) |
| */ |
| public OutputStructureElement(String name) { |
| // there's at least one target as it is the root which may be instantiated via this constructor |
| children = new ArrayList(1); |
| this.name = name; |
| } |
| |
| /** |
| * This constructor is used for any element but the first element of the structure (the root element) |
| */ |
| public OutputStructureElement(String name, OutputStructureElement parent, int startIndex) { |
| children = new ArrayList(0); |
| this.name = name; |
| this.startIndex = startIndex; |
| parent.addChild(this); |
| } |
| |
| public void addChild(OutputStructureElement child) { |
| children.add(child); |
| child.setParent(this); |
| } |
| |
| public boolean hasChildren() { |
| return !children.isEmpty(); |
| } |
| |
| public String getName() { |
| return name; |
| } |
| |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| public void setParent(OutputStructureElement parent) { |
| this.parent = parent; |
| } |
| |
| public OutputStructureElement getParent() { |
| return parent; |
| } |
| |
| public OutputStructureElement[] getChildren() { |
| return (OutputStructureElement[]) children.toArray(new OutputStructureElement[children.size()]); |
| } |
| |
| public void setStartIndex(int index) { |
| startIndex = index; |
| } |
| |
| public void setEndIndex(int index) { |
| length = index - startIndex; |
| } |
| |
| public int getStartIndex() { |
| return startIndex; |
| } |
| |
| public int getEndIndex() { |
| return startIndex + length; |
| } |
| |
| public int getLength() { |
| return length; |
| } |
| |
| public String toString() { |
| return name; |
| } |
| |
| } |
| |