| /******************************************************************************* |
| * Copyright (c) 2005, 2011 IBM Corporation and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ant.internal.ui.model; |
| |
| import java.io.File; |
| |
| import org.apache.tools.ant.Task; |
| import org.apache.tools.ant.util.FileUtils; |
| import org.eclipse.ant.internal.core.IAntCoreConstants; |
| import org.eclipse.ant.internal.ui.editor.AntEditorCompletionProcessor; |
| import org.xml.sax.Attributes; |
| |
| public class AntAntNode extends AntTaskNode { |
| |
| private String fFile; |
| |
| public AntAntNode(Task task, Attributes attributes) { |
| super(task); |
| StringBuffer label = new StringBuffer("ant "); //$NON-NLS-1$ |
| fFile = attributes.getValue(IAntCoreConstants.DIR); |
| if (fFile != null) { |
| if (!FileUtils.isAbsolutePath(fFile)) { |
| File basedir = task.getProject().getBaseDir(); |
| if (basedir != null) { |
| fFile = basedir.getAbsolutePath() + File.separatorChar + fFile; |
| } |
| } |
| label.append(fFile); |
| label.append(File.separatorChar); |
| } else { |
| File basedir = task.getProject().getBaseDir(); |
| if (basedir != null) { |
| fFile = basedir.getAbsolutePath(); |
| } |
| } |
| String fileName = attributes.getValue(IAntModelConstants.ATTR_ANT_FILE); |
| if (fileName == null) { |
| fileName = "build.xml"; //$NON-NLS-1$ |
| } |
| label.append(fileName); |
| if (fFile == null || FileUtils.isAbsolutePath(fileName)) { |
| fFile = fileName; |
| } else { |
| fFile += File.separatorChar + fileName; |
| } |
| |
| String more = attributes.getValue(IAntModelConstants.ATTR_TARGET); |
| if (more != null) { |
| label.append(' '); |
| label.append(more); |
| } |
| setBaseLabel(label.toString()); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ant.internal.ui.model.AntElementNode#getReferencedElement(int) |
| */ |
| @Override |
| public String getReferencedElement(int offset) { |
| if (fFile != null) { |
| String textToSearch = getAntModel().getText(getOffset(), offset - getOffset()); |
| if (textToSearch != null && textToSearch.length() != 0) { |
| String attributeString = AntEditorCompletionProcessor.getAttributeStringFromDocumentStringToPrefix(textToSearch); |
| if (IAntModelConstants.ATTR_ANT_FILE.equals(attributeString)) { |
| return fFile; |
| } |
| } |
| } |
| return null; |
| } |
| } |