1 /*******************************************************************************
2 * Copyright (c) 2000, 2004 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package net.sourceforge.phpdt.internal.core;
13 import net.sourceforge.phpdt.core.IImportContainer;
14 import net.sourceforge.phpdt.core.IImportDeclaration;
15 import net.sourceforge.phpdt.core.IJavaElement;
16 import net.sourceforge.phpdt.core.IParent;
17 import net.sourceforge.phpdt.core.ISourceRange;
18 import net.sourceforge.phpdt.core.ISourceReference;
19 import net.sourceforge.phpdt.core.JavaModelException;
20 import net.sourceforge.phpdt.core.WorkingCopyOwner;
21 import net.sourceforge.phpdt.internal.core.util.MementoTokenizer;
23 //import net.sourceforge.phpdt.internal.core.util.MementoTokenizer;
26 * @see IImportContainer
28 public class ImportContainer extends SourceRefElement implements IImportContainer {
29 protected ImportContainer(CompilationUnit parent) {
30 super(parent, ""); //$NON-NLS-1$
33 public boolean equals(Object o) {
34 if (!(o instanceof ImportContainer))
36 return super.equals(o);
42 public int getElementType() {
43 return IMPORT_CONTAINER;
49 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
50 switch (token.charAt(0)) {
52 return getHandleUpdatingCountFromMemento(memento, workingCopyOwner);
53 case JEM_IMPORTDECLARATION:
54 if (memento.hasMoreTokens()) {
55 String importName = memento.nextToken();
56 JavaElement importDecl = (JavaElement) getImport(importName);
57 return importDecl.getHandleFromMemento(memento, workingCopyOwner);
66 * @see JavaElement#getHandleMemento()
68 protected char getHandleMementoDelimiter() {
69 return JavaElement.JEM_IMPORTDECLARATION;
73 * @see IImportContainer
75 public IImportDeclaration getImport(String importName) {
76 return new ImportDeclaration(this, importName);
80 * @see JavaElement#getPrimaryElement(boolean)
82 public IJavaElement getPrimaryElement(boolean checkOwner) {
83 CompilationUnit cu = (CompilationUnit) this.parent;
84 if (checkOwner && cu.isPrimary())
86 return cu.getImportContainer();
90 * @see ISourceReference
92 public ISourceRange getSourceRange() throws JavaModelException {
93 IJavaElement[] imports = getChildren();
94 ISourceRange firstRange = ((ISourceReference) imports[0]).getSourceRange();
95 ISourceRange lastRange = ((ISourceReference) imports[imports.length - 1]).getSourceRange();
96 SourceRange range = new SourceRange(firstRange.getOffset(), lastRange.getOffset() + lastRange.getLength()
97 - firstRange.getOffset());
102 * Import containers only exist if they have children.
106 public boolean hasChildren() {
112 public String readableName() {
118 * @private Debugging purposes
120 protected void toString(int tab, StringBuffer buffer) {
121 Object info = JavaModelManager.getJavaModelManager().peekAtInfo(this);
122 if (info == null || !(info instanceof JavaElementInfo))
124 IJavaElement[] children = ((JavaElementInfo) info).getChildren();
125 for (int i = 0; i < children.length; i++) {
127 buffer.append("\n"); //$NON-NLS-1$
128 ((JavaElement) children[i]).toString(tab, buffer);
135 protected void toStringInfo(int tab, StringBuffer buffer, Object info) {
136 buffer.append(this.tabString(tab));
137 buffer.append("<import container>"); //$NON-NLS-1$
139 buffer.append(" (not open)"); //$NON-NLS-1$