Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJared Burns2002-10-31 19:36:02 +0000
committerJared Burns2002-10-31 19:36:02 +0000
commitbda16a34a9115a2c50d2d1d6a13420b565b14a1a (patch)
treee8e2c39b46918c01ae8dc27224dc00294aaf4a9a
parent22ecb4a238a5b753861f6daa056c32a4ea4837b0 (diff)
downloadeclipse.platform.debug-bda16a34a9115a2c50d2d1d6a13420b565b14a1a.tar.gz
eclipse.platform.debug-bda16a34a9115a2c50d2d1d6a13420b565b14a1a.tar.xz
eclipse.platform.debug-bda16a34a9115a2c50d2d1d6a13420b565b14a1a.zip
Released the Ant View
-rw-r--r--org.eclipse.ui.externaltools/.classpath1
-rw-r--r--org.eclipse.ui.externaltools/Ant Runner Support/org/eclipse/ui/externaltools/internal/ant/inputhandler/AntInputHandler.java61
-rw-r--r--org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AddCustomDialog.java11
-rw-r--r--org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntClasspathPage.java99
-rw-r--r--org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntPage.java16
-rw-r--r--org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntFileRunner.java6
-rw-r--r--org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntUtil.java21
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/ClearAction.java42
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/MsgLvlAction.java43
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/RefreshAction.java42
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/RunAction.java73
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/AntRunnable.java107
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/IAntViewConstants.java54
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/ResourceMgr.java180
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/ResourceStrings.properties54
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/events/OpenListener.java34
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/preferences/PreferencePage.java110
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/preferences/Preferences.java53
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ElementNode.java28
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ErrorNode.java24
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ProjectErrorNode.java25
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ProjectNode.java52
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/TargetNode.java122
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/TreeNode.java190
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntView.java233
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewContentProvider.java440
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewFilter.java32
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewLabelProvider.java71
-rw-r--r--org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewSorter.java7
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/messages.properties14
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/AntRunActionDelegate.java3
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/IExternalToolsUIConstants.java18
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/model/IExternalToolConstants.java5
-rw-r--r--org.eclipse.ui.externaltools/Release-Notes.txt94
-rw-r--r--org.eclipse.ui.externaltools/build.properties3
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/ant_project.gifbin0 -> 156 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/ant_project_err.gifbin0 -> 156 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/ant_run.gifbin0 -> 193 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_arrow.gifbin0 -> 169 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_check.gifbin0 -> 165 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/clear_co.gifbin0 -> 162 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/element.gifbin0 -> 140 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/elements.gifbin0 -> 232 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/error.gifbin0 -> 167 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/properties.gifbin0 -> 116 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/clcl16/refresh_nav.gifbin0 -> 182 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/cview16/ant_view.gifbin0 -> 131 bytes
-rw-r--r--org.eclipse.ui.externaltools/lib/antrunner.jarbin0 -> 8612 bytes
-rw-r--r--org.eclipse.ui.externaltools/plugin.properties1
-rw-r--r--org.eclipse.ui.externaltools/plugin.xml16
-rw-r--r--org.eclipse.ui.externaltools/scripts/buildExtraJAR.xml2
-rw-r--r--org.eclipse.ui.externaltools/scripts/exportplugin.xml1
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/.project11
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/build.xml15
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/readme.txt4
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Java Test/.classpath6
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Java Test/.project17
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Java Test/bin.log2
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Java Test/bin/main.classbin0 -> 403 bytes
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Java Test/build.xml40
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Java Test/src/main.classbin0 -> 731 bytes
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Java Test/src/main.java13
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Test/.project11
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Test/Buildfile Error/build.xml44
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Test/Custom Build filename/customBuild.xml39
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Test/Missing default target/build.xml27
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Test/Missing project element/build.xml27
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Test/Missing project name/build.xml27
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Test/Similar Dependencies/build.xml15
-rw-r--r--org.eclipse.ui.externaltools/test/AntView Test/Simple Dependency/build.xml9
70 files changed, 2667 insertions, 28 deletions
diff --git a/org.eclipse.ui.externaltools/.classpath b/org.eclipse.ui.externaltools/.classpath
index bd288985c..3910c4010 100644
--- a/org.eclipse.ui.externaltools/.classpath
+++ b/org.eclipse.ui.externaltools/.classpath
@@ -4,6 +4,7 @@
<classpathentry kind="src" path="Ant Tools Support"/>
<classpathentry kind="src" path="External Tools Base"/>
<classpathentry kind="src" path="Program Tools Support"/>
+ <classpathentry kind="src" path="Ant View"/>
<classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
<classpathentry kind="src" path="/org.apache.ant"/>
<classpathentry kind="src" path="/org.eclipse.ant.core"/>
diff --git a/org.eclipse.ui.externaltools/Ant Runner Support/org/eclipse/ui/externaltools/internal/ant/inputhandler/AntInputHandler.java b/org.eclipse.ui.externaltools/Ant Runner Support/org/eclipse/ui/externaltools/internal/ant/inputhandler/AntInputHandler.java
new file mode 100644
index 000000000..1810d195f
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant Runner Support/org/eclipse/ui/externaltools/internal/ant/inputhandler/AntInputHandler.java
@@ -0,0 +1,61 @@
+package org.eclipse.ui.externaltools.internal.ant.inputhandler;
+
+/**********************************************************************
+Copyright (c) 2000, 2002 IBM Corp. All rights reserved.
+This file is made available under the terms of the Common Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/cpl-v10.html
+**********************************************************************/
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.input.DefaultInputHandler;
+import org.apache.tools.ant.input.InputRequest;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.externaltools.internal.model.ToolMessages;
+
+/**
+ * The default input handler when using Ant within Eclipse.
+ * This is the class that will respond to <input> requests from
+ * within an Ant build file.
+ */
+public class AntInputHandler extends DefaultInputHandler {
+
+ /**
+ * @see org.apache.tools.ant.input.InputHandler#handleInput(org.apache.tools.ant.input.InputRequest)
+ */
+ public void handleInput(InputRequest request) throws BuildException {
+ BuildException[] problem= new BuildException[1];
+ Runnable runnable= getHandleInputRunnable(request, problem);
+ Display.getDefault().syncExec(runnable);
+ if (problem[0] != null) {
+ throw problem[0];
+ }
+ }
+
+ protected Runnable getHandleInputRunnable(final InputRequest request, final BuildException[] problem) {
+ return new Runnable() {
+ public void run() {
+ String prompt = getPrompt(request);
+ String title= ToolMessages.getString("AntInputHandler.Ant_Input_Request_1"); //$NON-NLS-1$
+ IInputValidator validator= new IInputValidator() {
+ int hitCount= -1;
+ public String isValid(String value) {
+ request.setInput(value);
+ if (request.isInputValid()) {
+ return null;
+ } else {
+ return ToolMessages.getString("AntInputHandler.Invalid_input_2"); //$NON-NLS-1$
+ }
+ }
+ };
+
+ InputDialog dialog= new InputDialog(null, title, prompt, "", validator); //$NON-NLS-1$
+ if (dialog.open() != InputDialog.OK) {
+ problem[0]= new BuildException(ToolMessages.getString("AntInputHandler.Unable_able_to_respond_to_<input>_request_4")); //$NON-NLS-1$
+ }
+ }
+ };
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AddCustomDialog.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AddCustomDialog.java
index ec3a63314..3be1043b3 100644
--- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AddCustomDialog.java
+++ b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AddCustomDialog.java
@@ -42,7 +42,7 @@ public class AddCustomDialog extends Dialog {
private Button okButton;
private Text nameField;
private Text classField;
- private Combo libraryField;
+ private org.eclipse.swt.widgets.List libraryField;
private List libraryUrls;
@@ -100,7 +100,7 @@ public class AddCustomDialog extends Dialog {
label.setLayoutData(data);
label = new Label(dialogArea, SWT.NONE);
- label.setText(ToolMessages.getString("AddTaskDialog.name")); //$NON-NLS-1$;
+ label.setText(ToolMessages.getString("AddCustomDialog.name")); //$NON-NLS-1$;
nameField = new Text(dialogArea, SWT.BORDER);
data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
@@ -112,7 +112,7 @@ public class AddCustomDialog extends Dialog {
});
label = new Label(dialogArea, SWT.NONE);
- label.setText(ToolMessages.getString("AddTaskDialog.class")); //$NON-NLS-1$;
+ label.setText(ToolMessages.getString("AddCustomDialog.class")); //$NON-NLS-1$;
classField = new Text(dialogArea, SWT.BORDER);
data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
@@ -124,8 +124,9 @@ public class AddCustomDialog extends Dialog {
});
label = new Label(dialogArea, SWT.NONE);
- label.setText(ToolMessages.getString("AddTaskDialog.library")); //$NON-NLS-1$;
- libraryField = new Combo(dialogArea, SWT.READ_ONLY | SWT.BORDER);
+ label.setText(ToolMessages.getString("AddCustomDialog.library")); //$NON-NLS-1$;
+ libraryField = new org.eclipse.swt.widgets.List(dialogArea, SWT.READ_ONLY | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+
data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
libraryField.setLayoutData(data);
diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntClasspathPage.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntClasspathPage.java
index 5c43391bb..eddd787fc 100644
--- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntClasspathPage.java
+++ b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntClasspathPage.java
@@ -11,14 +11,20 @@ Contributors:
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.FileDialog;
@@ -28,16 +34,22 @@ import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.externaltools.internal.model.ExternalToolsPlugin;
import org.eclipse.ui.externaltools.internal.model.ToolMessages;
+import org.eclipse.ui.externaltools.internal.ui.IExternalToolsUIConstants;
/**
* Sub-page that allows the user to enter custom classpaths
* to be used when running Ant build files.
*/
public class AntClasspathPage extends AntPage {
- private static final int ADD_JAR_BUTTON = IDialogConstants.CLIENT_ID + 1;
+ private static final int ADD_JARS_BUTTON = IDialogConstants.CLIENT_ID + 1;
private static final int ADD_FOLDER_BUTTON = IDialogConstants.CLIENT_ID + 2;
private static final int REMOVE_BUTTON = IDialogConstants.CLIENT_ID + 3;
+ private static final int UP_BUTTON = IDialogConstants.CLIENT_ID + 4;
+ private static final int DOWN_BUTTON = IDialogConstants.CLIENT_ID + 5;
+ private Button upButton;
+ private Button downButton;
+ private IDialogSettings fDialogSettings;
private final AntClasspathLabelProvider labelProvider = new AntClasspathLabelProvider();
/**
@@ -45,15 +57,18 @@ public class AntClasspathPage extends AntPage {
*/
public AntClasspathPage(AntPreferencePage preferencePage) {
super(preferencePage);
+ fDialogSettings= ExternalToolsPlugin.getDefault().getDialogSettings();
}
/* (non-Javadoc)
* Method declared on AntPage.
*/
protected void addButtonsToButtonGroup(Composite parent) {
- createButton(parent, "AntClasspathPage.addJarButtonTitle", ADD_JAR_BUTTON); //$NON-NLS-1$;
+ createButton(parent, "AntClasspathPage.addJarButtonTitle", ADD_JARS_BUTTON); //$NON-NLS-1$;
createButton(parent, "AntClasspathPage.addFolderButtonTitle", ADD_FOLDER_BUTTON); //$NON-NLS-1$;
createSeparator(parent);
+ upButton= createButton(parent, "AntClasspathPage.upButtonTitle", UP_BUTTON); //$NON-NLS-1$;
+ downButton= createButton(parent, "AntClasspathPage.downButtonTitle", DOWN_BUTTON); //$NON-NLS-1$;
removeButton= createButton(parent, "AntClasspathPage.removeButtonTitle", REMOVE_BUTTON); //$NON-NLS-1$;
}
@@ -75,19 +90,35 @@ public class AntClasspathPage extends AntPage {
}
/**
- * Allows the user to enter a JAR as a classpath.
+ * Allows the user to enter JARs to the classpath.
*/
- private void addJarButtonPressed() {
- FileDialog dialog = new FileDialog(getShell());
+ private void addJarsButtonPressed() {
+ String lastUsedPath;
+ lastUsedPath= fDialogSettings.get(IExternalToolsUIConstants.DIALOGSTORE_LASTEXTJAR);
+ if (lastUsedPath == null) {
+ lastUsedPath= ""; //$NON-NLS-1$
+ }
+ FileDialog dialog = new FileDialog(getShell(), SWT.MULTI);
dialog.setFilterExtensions(new String[] { "*.jar" }); //$NON-NLS-1$;
+ dialog.setFilterPath(lastUsedPath);
+
String result = dialog.open();
- if (result != null) {
+ if (result == null) {
+ return;
+ }
+ IPath filterPath= new Path(dialog.getFilterPath());
+ String[] results= dialog.getFileNames();
+ for (int i = 0; i < results.length; i++) {
+ String jarName = results[i];
try {
- URL url = new URL("file:" + result); //$NON-NLS-1$;
+ IPath path= filterPath.append(jarName).makeAbsolute();
+ URL url = new URL("file:" + path.toOSString()); //$NON-NLS-1$;
addContent(url);
} catch (MalformedURLException e) {
}
}
+
+ fDialogSettings.put(IExternalToolsUIConstants.DIALOGSTORE_LASTEXTJAR, filterPath.toOSString());
}
/* (non-Javadoc)
@@ -95,12 +126,18 @@ public class AntClasspathPage extends AntPage {
*/
protected void buttonPressed(int buttonId) {
switch (buttonId) {
- case ADD_JAR_BUTTON :
- addJarButtonPressed();
+ case ADD_JARS_BUTTON :
+ addJarsButtonPressed();
break;
case ADD_FOLDER_BUTTON :
addFolderButtonPressed();
break;
+ case UP_BUTTON :
+ handleMove(-1);
+ break;
+ case DOWN_BUTTON :
+ handleMove(1);
+ break;
case REMOVE_BUTTON :
removeButtonPressed();
break;
@@ -130,9 +167,51 @@ public class AntClasspathPage extends AntPage {
* Method declared on AntPage.
*/
protected void tableSelectionChanged(IStructuredSelection newSelection) {
- removeButton.setEnabled(newSelection.size() > 0);
+ IStructuredSelection selection = (IStructuredSelection)getTableViewer().getSelection();
+ List urls = getContents();
+ boolean notEmpty = !selection.isEmpty();
+ Iterator elements= selection.iterator();
+ boolean first= false;
+ boolean last= false;
+ int lastUrl= urls.size() - 1;
+ while (elements.hasNext()) {
+ Object element = (Object) elements.next();
+ if(!first && urls.indexOf(element) == 0) {
+ first= true;
+ }
+ if (!last && urls.indexOf(element) == lastUrl) {
+ last= true;
+ }
+ }
+
+ removeButton.setEnabled(notEmpty);
+ upButton.setEnabled(notEmpty && !first);
+ downButton.setEnabled(notEmpty && !last);
}
+ protected void handleMove(int direction) {
+ IStructuredSelection sel = (IStructuredSelection)getTableViewer().getSelection();
+ List selList= sel.toList();
+ List contents= getContents();
+ Object[] movedURL= new Object[contents.size()];
+ int i;
+ for (Iterator urls = selList.iterator(); urls.hasNext();) {
+ Object config = urls.next();
+ i= contents.indexOf(config);
+ movedURL[i + direction]= config;
+ }
+
+ contents.removeAll(selList);
+
+ for (int j = 0; j < movedURL.length; j++) {
+ Object config = movedURL[j];
+ if (config != null) {
+ contents.add(j, config);
+ }
+ }
+ setInput(contents);
+ getTableViewer().refresh();
+ }
/**
* Label provider for classpath elements
diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntPage.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntPage.java
index 89d2abc38..38639ffc9 100644
--- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntPage.java
+++ b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/dialog/AntPage.java
@@ -10,10 +10,10 @@ Contributors:
**********************************************************************/
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -125,7 +125,9 @@ public abstract class AntPage {
*/
private void createTable(Composite parent) {
Table table = new Table(parent, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
- table.setLayoutData(new GridData(GridData.FILL_BOTH));
+ GridData data= new GridData(GridData.FILL_BOTH);
+ data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
+ table.setLayoutData(data);
contentProvider = new AntPageContentProvider();
tableViewer = new TableViewer(table);
tableViewer.setContentProvider(contentProvider);
@@ -145,7 +147,11 @@ public abstract class AntPage {
if (tableViewer == null || tableViewer.getControl().isDisposed())
return null;
Object[] elements = contentProvider.getElements(tableViewer.getInput());
- return Arrays.asList(elements);
+ List contents= new ArrayList(elements.length);
+ for (int i = 0; i < elements.length; i++) {
+ contents.add(elements[i]);
+ }
+ return contents;
}
/**
@@ -265,4 +271,8 @@ public abstract class AntPage {
protected AntPreferencePage getPreferencePage() {
return preferencePage;
}
+
+ protected TableViewer getTableViewer() {
+ return tableViewer;
+ }
} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntFileRunner.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntFileRunner.java
index ab15a8c5a..bbc6bd6e8 100644
--- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntFileRunner.java
+++ b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntFileRunner.java
@@ -25,7 +25,9 @@ import org.eclipse.ui.externaltools.model.IRunnerLog;
public class AntFileRunner implements IExternalToolRunner {
private static final String ANT_LOGGER_CLASS = "org.eclipse.ui.externaltools.internal.ant.logger.AntBuildLogger"; //$NON-NLS-1$
private static final String BASE_DIR_PREFIX = "-Dbasedir="; //$NON-NLS-1$
-
+
+ private static final String INPUT_HANDLER_CLASS = "org.eclipse.ui.externaltools.internal.ant.inputhandler.AntInputHandler"; //$NON-NLS-1$
+
/**
* Creates an ant build file runner
*/
@@ -84,7 +86,7 @@ public class AntFileRunner implements IExternalToolRunner {
IRunnerLog.LEVEL_VERBOSE);
}
}
-
+ runner.setInputHandler(INPUT_HANDLER_CLASS);
if (!monitor.isCanceled()) {
runner.run(monitor);
}
diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntUtil.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntUtil.java
index 6e05486a8..5cfcf35d9 100644
--- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntUtil.java
+++ b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/model/AntUtil.java
@@ -14,6 +14,10 @@ import java.util.StringTokenizer;
import org.eclipse.ant.core.AntRunner;
import org.eclipse.ant.core.TargetInfo;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntView;
import org.eclipse.ui.externaltools.model.IExternalToolConstants;
/**
@@ -69,6 +73,23 @@ public final class AntUtil {
}
/**
+ * Returns the currently displayed Ant View if it is open.
+ *
+ * @return the Ant View open in the current workbench page or
+ * <code>null</code> if there is none.
+ */
+ public static AntView getAntView() {
+ IWorkbenchWindow window= PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window != null) {
+ IWorkbenchPage page= window.getActivePage();
+ if (page != null) {
+ return (AntView) page.findView(IExternalToolConstants.ANT_VIEW_ID);
+ }
+ }
+ return null;
+ }
+
+ /**
* Returns whether the target described by the given
* <code>TargetInfo</code> is an internal target.
*
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/ClearAction.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/ClearAction.java
new file mode 100644
index 000000000..fa0c4767d
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/ClearAction.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.actions;
+
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntView;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntViewContentProvider;
+import org.eclipse.ui.externaltools.internal.ant.model.AntUtil;
+
+public class ClearAction extends Action {
+ /**
+ * Constructor for ClearAction
+ */
+ public ClearAction(String label, ImageDescriptor imageDescriptor) {
+ super(label, imageDescriptor);
+ setToolTipText(label);
+ }
+
+ /**
+ * @see Action#run()
+ */
+ public void run() {
+ AntView antView = AntUtil.getAntView();
+ if (antView == null) {
+ return;
+ }
+ AntViewContentProvider viewContentProvider = antView.getViewContentProvider();
+
+ viewContentProvider.clear();
+
+ antView.refresh();
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/MsgLvlAction.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/MsgLvlAction.java
new file mode 100644
index 000000000..871db52a9
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/MsgLvlAction.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.IAntViewConstants;
+import org.eclipse.ui.externaltools.internal.ant.antview.preferences.Preferences;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntView;
+import org.eclipse.ui.externaltools.internal.ant.model.AntUtil;
+
+public class MsgLvlAction extends Action {
+ private String displayLevel;
+
+ /**
+ * Constructor for Action
+ */
+ public MsgLvlAction(String label, String displayLevel) {
+ super(label);
+ this.displayLevel = displayLevel;
+ }
+
+ /**
+ * @see Action#run()
+ */
+ public void run() {
+ AntView antView = AntUtil.getAntView();
+ if (antView == null) {
+ return;
+ }
+ Action prevLevelAction = (Action) antView.getMsgLevelAction(
+ Preferences.getString(IAntViewConstants.PREF_ANT_DISPLAY));
+ if (null != prevLevelAction) prevLevelAction.setChecked(false);
+ Preferences.setString(IAntViewConstants.PREF_ANT_DISPLAY, displayLevel);
+ setChecked(true);
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/RefreshAction.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/RefreshAction.java
new file mode 100644
index 000000000..d9e08b6e2
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/RefreshAction.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.actions;
+
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntView;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntViewContentProvider;
+import org.eclipse.ui.externaltools.internal.ant.model.AntUtil;
+
+public class RefreshAction extends Action {
+ /**
+ * Constructor for Action
+ */
+ public RefreshAction(String label, ImageDescriptor imageDescriptor) {
+ super(label, imageDescriptor);
+ setToolTipText(label);
+ }
+
+ /**
+ * @see Action#run()
+ */
+ public void run() {
+ AntView antView = AntUtil.getAntView();
+ if (antView == null) {
+ return;
+ }
+ AntViewContentProvider viewContentProvider = antView.getViewContentProvider();
+
+ viewContentProvider.reset();
+
+ antView.refresh();
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/RunAction.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/RunAction.java
new file mode 100644
index 000000000..0d69bff2b
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/actions/RunAction.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.actions;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.AntRunnable;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntView;
+import org.eclipse.ui.externaltools.internal.ant.model.AntUtil;
+import org.eclipse.ui.externaltools.internal.model.ExternalToolsPlugin;
+import org.eclipse.ui.externaltools.internal.ui.LogConsoleDocument;
+import org.eclipse.ui.externaltools.model.IExternalToolConstants;
+
+public class RunAction extends Action {
+ /**
+ * Constructor for RunAction
+ */
+ public RunAction(String label, ImageDescriptor imageDescriptor) {
+ super(label, imageDescriptor);
+ setToolTipText(label);
+ }
+
+ /**
+ * @see Action#run()
+ */
+ public void run() {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ IWorkbenchPage page = window.getActivePage();
+ try {
+ if (page != null) {
+ page.showView(IExternalToolConstants.LOG_CONSOLE_VIEW_ID);
+ }
+ } catch (PartInitException e) {
+ ExternalToolsPlugin.getDefault().getLog().log(e.getStatus());
+ }
+ LogConsoleDocument.getInstance().clearOutput();
+ AntView view= AntUtil.getAntView();
+
+ if (view == null) {
+ LogConsoleDocument.getInstance().append("An error occurred launching Ant. Could not find ant view.", LogConsoleDocument.MSG_ERR);
+ }
+ AntRunnable runnable= new AntRunnable(view);
+ try {
+ new ProgressMonitorDialog(AntUtil.getAntView().getSite().getShell()).run(true, true, runnable);
+ } catch (InvocationTargetException e) {
+ String message;
+ if (e.getTargetException() instanceof CoreException)
+ message = ((CoreException) e.getTargetException()).getLocalizedMessage();
+ else
+ message = e.getLocalizedMessage();
+ LogConsoleDocument.getInstance().append(message + "\n", LogConsoleDocument.MSG_ERR);
+ } catch (InterruptedException e) {
+ LogConsoleDocument.getInstance().append(ResourceMgr.getString("Error.UserCancel") + "\n", LogConsoleDocument.MSG_ERR);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/AntRunnable.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/AntRunnable.java
new file mode 100644
index 000000000..374501022
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/AntRunnable.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.core;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ListIterator;
+import java.util.Vector;
+
+import org.apache.tools.ant.Project;
+import org.eclipse.ant.core.AntRunner;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.ui.externaltools.internal.ant.antview.preferences.Preferences;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.TreeNode;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntView;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntViewContentProvider;
+import org.eclipse.ui.externaltools.internal.ui.LogConsoleDocument;
+
+public class AntRunnable implements IRunnableWithProgress {
+ private static final String ANT_LOGGER_CLASS = "org.eclipse.ui.externaltools.internal.ant.logger.AntBuildLogger";
+ private static final String INPUT_HANDLER_CLASS = "org.eclipse.ui.externaltools.internal.ant.inputhandler.AntInputHandler"; //$NON-NLS-1$
+ private static final int TOTAL_WORK_UNITS = 100;
+
+ private AntView antView;
+
+ public AntRunnable(AntView antView) {
+ this.antView= antView;
+ }
+
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ monitor.beginTask(ResourceMgr.getString("Monitor.Title"), TOTAL_WORK_UNITS);
+
+ AntViewContentProvider viewContentProvider = antView.getViewContentProvider();
+ Vector targetVector = viewContentProvider.getTargetVector();
+
+ if (0 == targetVector.size()) {
+ LogConsoleDocument.getInstance().append(ResourceMgr.getString("Error.EmptyTargetVector") + "\n", LogConsoleDocument.MSG_ERR);
+ monitor.done();
+ return;
+ }
+ int workunit = TOTAL_WORK_UNITS / targetVector.size();
+ if (0 == workunit)
+ workunit = 1;
+ ListIterator targets = targetVector.listIterator();
+ while (targets.hasNext()) {
+ TreeNode targetNode = (TreeNode) targets.next();
+
+ String filename = (String) targetNode.getProperty("BuildFile");
+ IPath path = new Path(filename);
+ path = path.setDevice("");
+ int trimCount = path.matchingFirstSegments(Platform.getLocation());
+ if (trimCount > 0)
+ path = path.removeFirstSegments(trimCount);
+ path.removeLastSegments(1);
+
+ AntRunner antRunner = new AntRunner();
+ antRunner.setBuildFileLocation(filename);
+ antRunner.addBuildLogger(ANT_LOGGER_CLASS);
+ antRunner.setInputHandler(INPUT_HANDLER_CLASS);
+ // antRunner.addUserProperties();
+ antRunner.setExecutionTargets(new String[] { targetNode.getText()});
+ antRunner.setMessageOutputLevel(getAntDisplayLevel(Preferences.getString(IAntViewConstants.PREF_ANT_DISPLAY)));
+
+ monitor.subTask(path.toString() + " -> " + targetNode.getText());
+ try {
+ antRunner.run(new SubProgressMonitor(monitor, workunit));
+ } catch (CoreException e) {
+ Throwable carriedException = e.getStatus().getException();
+ if (carriedException instanceof OperationCanceledException) {
+ throw new InterruptedException(carriedException.getMessage());
+ } else {
+ throw new InvocationTargetException(e);
+ }
+ } catch (OperationCanceledException e) {
+ throw new InvocationTargetException(e);
+ }
+ }
+ monitor.done();
+ }
+
+ private int getAntDisplayLevel(String level) {
+ if (level.equals(IAntViewConstants.ANT_DISPLAYLVL_ERROR))
+ return Project.MSG_ERR;
+ if (level.equals(IAntViewConstants.ANT_DISPLAYLVL_WARN))
+ return Project.MSG_WARN;
+ if (level.equals(IAntViewConstants.ANT_DISPLAYLVL_INFO))
+ return Project.MSG_INFO;
+ if (level.equals(IAntViewConstants.ANT_DISPLAYLVL_VERBOSE))
+ return Project.MSG_VERBOSE;
+ if (level.equals(IAntViewConstants.ANT_DISPLAYLVL_DEBUG))
+ return Project.MSG_DEBUG;
+ return Project.MSG_DEBUG;
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/IAntViewConstants.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/IAntViewConstants.java
new file mode 100644
index 000000000..b42a0338c
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/IAntViewConstants.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.core;
+
+public interface IAntViewConstants {
+ public static final String RESOURCE_BASE_NAME = "org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceStrings";
+
+ public static final String IMAGE_DIR = "icons/full/clcl16/";
+ public static final String IMAGE_PROJECT = "ant_project.gif";
+ public static final String IMAGE_PROJECT_ERROR = "ant_project_err.gif";
+ public static final String IMAGE_TARGET_SELECTED = "ant_tsk_check.gif";
+ public static final String IMAGE_TARGET_DESELECTED = "ant_tsk_arrow.gif";
+ public static final String IMAGE_RUN = "ant_run.gif";
+ public static final String IMAGE_CLEAR = "clear_co.gif";
+ public static final String IMAGE_REFRESH = "refresh_nav.gif";
+ public static final String IMAGE_ELEMENT = "element.gif";
+ public static final String IMAGE_ELEMENTS = "elements.gif";
+ public static final String IMAGE_DEFAULT = "elements.gif";
+ public static final String IMAGE_DEFAULT_ERROR = "elements.gif";
+ public static final String IMAGE_ERROR = "error.gif";
+
+ public static final String PREF_ANT_DISPLAY = "org.eclipse.ui.externaltools.antview.preference.AntDisplayLevel";
+ public static final String PREF_PROJECT_DISPLAY = "org.eclipse.ui.externaltools.antview.preference.ProjectDisplay";
+ public static final String PREF_TARGET_DISPLAY = "org.eclipse.ui.externaltools.antview.preference.TargetDisplay";
+ public static final String PREF_TARGET_FILTER = "org.eclipse.ui.externaltools.antview.preference.TargetFilter";
+ public static final String PREF_ANT_BUILD_FILE = "org.eclipse.ui.externaltools.antview.preference.AntBuildFile";
+ public static final String PREF_TARGET_VECTOR = "org.eclipse.ui.externaltools.antview.preference.TargetVector";
+
+ public static final String ANT_DISPLAYLVL_ERROR = "ERROR";
+ public static final String ANT_DISPLAYLVL_WARN = "WARN";
+ public static final String ANT_DISPLAYLVL_INFO = "INFO";
+ public static final String ANT_DISPLAYLVL_VERBOSE = "VERBOSE";
+ public static final String ANT_DISPLAYLVL_DEBUG = "DEBUG";
+
+ public static final String PROJECT_DISPLAY_NAMEATTR = "Name.Attribute";
+ public static final String PROJECT_DISPLAY_DIRLOC = "Directory.Location";
+ public static final String PROJECT_DISPLAY_BOTH = "Both";
+
+ public static final String TARGET_DISPLAY_NAMEATTR = "Name Attribute";
+ public static final String TARGET_DISPLAY_DESCATTR = "Description Attribute";
+ public static final String TARGET_DISPLAY_BOTH = "Both";
+
+ public static final String TARGET_FILTER_NONE = "None";
+ public static final String TARGET_FILTER_DESCATTR = "Description Attribute";
+
+}
+
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/ResourceMgr.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/ResourceMgr.java
new file mode 100644
index 000000000..195027dbf
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/ResourceMgr.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.core;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.externaltools.internal.model.ExternalToolsPlugin;
+
+public class ResourceMgr {
+
+ private static ResourceBundle resourceBundle = null;
+ private static Hashtable imageMap = null;
+ private static Hashtable imageDescriptorMap = null;
+ private static URL imageURLBase = null;
+
+ public static void init() {
+ if (imageURLBase != null) {
+ // The resource manager has already been initialized
+ return;
+ }
+ URL urlBase = null;
+ try {
+ urlBase = new URL(ExternalToolsPlugin.getDefault().getDescriptor().getInstallURL(), IAntViewConstants.IMAGE_DIR);
+ } catch (MalformedURLException ex) {
+ urlBase = null;
+ }
+
+ ResourceMgr.setImageBase(urlBase);
+ ResourceMgr.setResourceBase(IAntViewConstants.RESOURCE_BASE_NAME);
+
+ ResourceMgr.setImage(IAntViewConstants.IMAGE_PROJECT);
+ ResourceMgr.setImage(IAntViewConstants.IMAGE_PROJECT_ERROR);
+ ResourceMgr.setImage(IAntViewConstants.IMAGE_TARGET_SELECTED);
+ ResourceMgr.setImage(IAntViewConstants.IMAGE_TARGET_DESELECTED);
+ ResourceMgr.setImage(IAntViewConstants.IMAGE_ELEMENT);
+ ResourceMgr.setImage(IAntViewConstants.IMAGE_ELEMENTS);
+ ResourceMgr.setImage(IAntViewConstants.IMAGE_ERROR);
+
+ ResourceMgr.setImageDescriptor(IAntViewConstants.IMAGE_RUN);
+ ResourceMgr.setImageDescriptor(IAntViewConstants.IMAGE_CLEAR);
+ ResourceMgr.setImageDescriptor(IAntViewConstants.IMAGE_REFRESH);
+ }
+
+ /**
+ * Method setResourceBase.
+ * @param resourceBaseName
+ */
+ public static void setResourceBase(String resourceBaseName) {
+ try {
+ resourceBundle = ResourceBundle.getBundle(resourceBaseName);
+ } catch (MissingResourceException ex) {
+ resourceBundle = null;
+ }
+ }
+
+ /**
+ * Method setImageBase.
+ * @param imageBase
+ */
+ public static void setImageBase(URL imageBase) {
+ imageMap = new Hashtable();
+ imageDescriptorMap = new Hashtable();
+ imageURLBase = imageBase;
+ }
+
+ /**
+ * Method getString.
+ * @param key
+ * @return String
+ */
+ public static String getString(String key) {
+ try {
+ return resourceBundle.getString(key);
+ } catch (MissingResourceException ex) {
+ return key;
+ }
+ }
+
+ /**
+ * Method getResourceBundle.
+ * @return ResourceBundle
+ */
+ public static ResourceBundle getResourceBundle() {
+ return resourceBundle;
+ }
+
+ /**
+ * Method setImageDescriptor.
+ * @param key
+ */
+ public static void setImageDescriptor(String key) {
+ ImageDescriptor imageDescriptor = null;
+ try {
+ URL imageLocation = new URL(imageURLBase, key);
+ imageDescriptor = ImageDescriptor.createFromURL(imageLocation);
+ } catch (MalformedURLException ex) {
+ imageDescriptor = null;
+ }
+ imageDescriptorMap.put(key, imageDescriptor);
+ }
+
+ /**
+ * Method setImageDescriptor.
+ * @param key
+ * @param imageDescriptor
+ */
+ public static void setImageDescriptor(String key, ImageDescriptor imageDescriptor) {
+ imageDescriptorMap.put(key, imageDescriptor);
+ }
+
+ /**
+ * Method setImage.
+ * @param key
+ */
+ public static void setImage(String key) {
+ Image image = null;
+ try {
+ URL imageLocation = new URL(imageURLBase, key);
+ image = new Image(null, imageLocation.openStream());
+ } catch (MalformedURLException ex) {
+ image = null;
+ } catch (IOException ex) {
+ image = null;
+ }
+ imageMap.put(key, image);
+ }
+
+ /**
+ * Method setImage.
+ * @param key
+ * @param image
+ */
+ public static void setImage(String key, Image image) {
+ imageMap.put(key, image);
+ }
+
+ /**
+ * Method getImageDescriptor.
+ * @param key
+ * @return ImageDescriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String key) {
+ return (ImageDescriptor) imageDescriptorMap.get(key);
+ }
+
+ /**
+ * Method getImage.
+ * @param key
+ * @return Image
+ */
+ public static Image getImage(String key) {
+ return (Image) imageMap.get(key);
+ }
+
+ /**
+ * Method dispose.
+ */
+ public static void dispose() {
+ Enumeration e = imageMap.elements();
+ while (e.hasMoreElements()) {
+ ((Image) e.nextElement()).dispose();
+ }
+ imageMap.clear();
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/ResourceStrings.properties b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/ResourceStrings.properties
new file mode 100644
index 000000000..e6dff0bd0
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/core/ResourceStrings.properties
@@ -0,0 +1,54 @@
+# Labels - Menu/Buttons
+Label.Run = Run
+Label.Refresh = Refresh
+Label.Clear = Clear
+Label.DisplayLevel = Ant Display Level
+
+# Display Levels
+DisplayLevel.Error = Error
+DisplayLevel.Warn = Warn
+DisplayLevel.Info = Info
+DisplayLevel.Verbose = Verbose
+DisplayLevel.Debug = Debug
+
+# Tree Labels
+Tree.Dependencies = Target Dependencies
+Tree.ExecuteOrder = Target Execute Order
+Tree.DefaultTarget = default
+Tree.Unknown = <Unknown>
+Tree.None = <none>
+Tree.Line = Line
+Tree.NoProjects = No ANT build files were found
+Tree.NoProjectElement = Root project element not found
+Tree.NoDefaultTarget = Missing default target attribute
+
+# Ant LogConsole Message Labels
+Ant.Project = Project:
+Ant.Target = Target:
+Ant.Task = Task:
+Ant.Finished = Finished
+
+# Preferences
+Preferences.PageDescription = AntView Preferences
+Preferences.ProjectNode.Label = Project Labels
+Preferences.ProjectNode.Both = Both
+Preferences.ProjectNode.NameAttr = Name Attribute
+Preferences.ProjectNode.DirLoc = Directory Location
+Preferences.TargetNode.Label = Target Labels
+Preferences.TargetNode.Both = Both
+Preferences.TargetNode.NameAttr = Name Attribute
+Preferences.TargetNode.DescAttr = Description Attribute
+Preferences.TargetFilter.Label = Target Filter
+Preferences.TargetFilter.None = None
+Preferences.TargetFilter.DescAttr = By Description Attribute
+Preferences.AntBuildFile.Label = Ant Build File Name
+
+# Errors
+Error.IncorrectClasspath = Incorrect Classpath
+Error.BuildFailed = Build Failed
+Error.InternalError = Internal Error
+Error.UserCancel = User Canceled Operation
+Error.EmptyTargetVector = No targets selected
+
+# Progress Monitor
+Monitor.Title = Ant build in progress \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/events/OpenListener.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/events/OpenListener.java
new file mode 100644
index 000000000..9d1311aea
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/events/OpenListener.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.events;
+
+import org.eclipse.jface.viewers.IOpenListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.OpenEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.TreeNode;
+
+public class OpenListener implements IOpenListener {
+ public void open(OpenEvent e) {
+ TreeViewer view = (TreeViewer) e.getViewer();
+ IStructuredSelection selection = (IStructuredSelection) e.getSelection();
+
+ try {
+ TreeNode item = (TreeNode) selection.getFirstElement();
+ item.setSelected();
+ } catch (ClassCastException cce) {
+ return;
+ } catch (NullPointerException npe) {
+ return;
+ }
+ view.refresh();
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/preferences/PreferencePage.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/preferences/PreferencePage.java
new file mode 100644
index 000000000..fb0ddf880
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/preferences/PreferencePage.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.preferences;
+
+import java.util.Vector;
+
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.RadioGroupFieldEditor;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.IAntViewConstants;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntView;
+import org.eclipse.ui.externaltools.internal.ant.antview.views.AntViewContentProvider;
+import org.eclipse.ui.externaltools.internal.ant.model.AntUtil;
+
+public class PreferencePage
+ extends FieldEditorPreferencePage
+ implements IWorkbenchPreferencePage {
+
+ /**
+ * Constructor
+ */
+ public PreferencePage() {
+ super(GRID);
+ setPreferenceStore(Preferences.getPreferenceStore());
+ setDescription(ResourceMgr.getString("Preferences.PageDescription"));
+ Preferences.setDefaults();
+ }
+
+ /**
+ * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
+ */
+ public void createFieldEditors() {
+ addField(new RadioGroupFieldEditor(
+ IAntViewConstants.PREF_PROJECT_DISPLAY,
+ ResourceMgr.getString("Preferences.ProjectNode.Label"),
+ 3,
+ new String[][] {
+ { ResourceMgr.getString("Preferences.ProjectNode.NameAttr"), IAntViewConstants.PROJECT_DISPLAY_NAMEATTR },
+ { ResourceMgr.getString("Preferences.ProjectNode.DirLoc"), IAntViewConstants.PROJECT_DISPLAY_DIRLOC },
+ { ResourceMgr.getString("Preferences.ProjectNode.Both"), IAntViewConstants.PROJECT_DISPLAY_BOTH }
+ },
+ getFieldEditorParent()
+ ));
+ addField(new RadioGroupFieldEditor(
+ IAntViewConstants.PREF_TARGET_DISPLAY,
+ ResourceMgr.getString("Preferences.TargetNode.Label"),
+ 3,
+ new String[][] {
+ { ResourceMgr.getString("Preferences.TargetNode.NameAttr"), IAntViewConstants.TARGET_DISPLAY_NAMEATTR },
+ { ResourceMgr.getString("Preferences.TargetNode.DescAttr"), IAntViewConstants.TARGET_DISPLAY_DESCATTR },
+ { ResourceMgr.getString("Preferences.TargetNode.Both"), IAntViewConstants.TARGET_DISPLAY_BOTH }
+ },
+ getFieldEditorParent()
+ ));
+ addField(new RadioGroupFieldEditor(
+ IAntViewConstants.PREF_TARGET_FILTER,
+ ResourceMgr.getString("Preferences.TargetFilter.Label"),
+ 2,
+ new String[][] {
+ { ResourceMgr.getString("Preferences.TargetFilter.None"), IAntViewConstants.TARGET_FILTER_NONE },
+ { ResourceMgr.getString("Preferences.TargetFilter.DescAttr"), IAntViewConstants.TARGET_FILTER_DESCATTR }
+ },
+ getFieldEditorParent()
+ ));
+ addField(new StringFieldEditor(
+ IAntViewConstants.PREF_ANT_BUILD_FILE,
+ ResourceMgr.getString("Preferences.AntBuildFile.Label"),
+ getFieldEditorParent()
+ ));
+ }
+ /**
+ * Method performOK.
+ * @return boolean
+ */
+ public boolean performOk() {
+ if (super.performOk()) {
+ AntView antView = AntUtil.getAntView();
+ if (antView == null) {
+ return true;
+ }
+ AntViewContentProvider viewContentProvider = antView.getViewContentProvider();
+ if (viewContentProvider == null) {
+ return true;
+ }
+ Vector targetVector = viewContentProvider.getTargetVector();
+
+ targetVector.removeAllElements();
+ viewContentProvider.reset();
+ antView.refresh();
+
+ return true;
+ }
+ return false;
+ }
+ /**
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(IWorkbench)
+ */
+ public void init(IWorkbench workbench) {
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/preferences/Preferences.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/preferences/Preferences.java
new file mode 100644
index 000000000..6a4e3d4c8
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/preferences/Preferences.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.preferences;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.IAntViewConstants;
+import org.eclipse.ui.externaltools.internal.model.ExternalToolsPlugin;
+
+public class Preferences {
+ /**
+ * Method setDefaults.
+ */
+ public static void setDefaults() {
+ IPreferenceStore store = getPreferenceStore();
+ store.setDefault(IAntViewConstants.PREF_ANT_DISPLAY, IAntViewConstants.ANT_DISPLAYLVL_INFO);
+ store.setDefault(IAntViewConstants.PREF_PROJECT_DISPLAY, IAntViewConstants.PROJECT_DISPLAY_DIRLOC);
+ store.setDefault(IAntViewConstants.PREF_TARGET_DISPLAY, IAntViewConstants.TARGET_DISPLAY_NAMEATTR);
+ store.setDefault(IAntViewConstants.PREF_TARGET_FILTER, IAntViewConstants.TARGET_FILTER_NONE);
+ store.setDefault(IAntViewConstants.PREF_ANT_BUILD_FILE, org.apache.tools.ant.Main.DEFAULT_BUILD_FILENAME);
+ }
+ /**
+ * Method getString.
+ * @param key
+ * @return String
+ */
+ public static String getString(String key) {
+ IPreferenceStore store = getPreferenceStore();
+ return store.getString(key);
+ }
+ /**
+ * Method setString.
+ * @param key
+ * @param value
+ */
+ public static void setString(String key, String value) {
+ IPreferenceStore store = getPreferenceStore();
+ store.setValue(key,value);
+ }
+ /**
+ * Method getPreferenceStore.
+ * @return IPreferenceStore
+ */
+ public static IPreferenceStore getPreferenceStore() {
+ return ExternalToolsPlugin.getDefault().getPreferenceStore();
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ElementNode.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ElementNode.java
new file mode 100644
index 000000000..9dc807dfb
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ElementNode.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.tree;
+
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+
+
+public class ElementNode extends TreeNode {
+ public ElementNode(String text) {
+ super(text);
+ }
+ public Image getImage() {
+ if (hasChildren()) {
+ return ResourceMgr.getImage(IMAGE_ELEMENTS);
+ } else {
+ return ResourceMgr.getImage(IMAGE_ELEMENT);
+ }
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ErrorNode.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ErrorNode.java
new file mode 100644
index 000000000..688affbe5
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ErrorNode.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.tree;
+
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+
+
+public class ErrorNode extends TreeNode {
+ public ErrorNode(String text) {
+ super(text);
+ }
+ public Image getImage() {
+ return ResourceMgr.getImage(IMAGE_ERROR);
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ProjectErrorNode.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ProjectErrorNode.java
new file mode 100644
index 000000000..9b27ae020
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ProjectErrorNode.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.tree;
+
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+
+public class ProjectErrorNode extends ProjectNode {
+ public ProjectErrorNode(String filename, String error) {
+ super(filename, error);
+ addChild(new ErrorNode(error));
+ }
+
+ public Image getImage() {
+ return ResourceMgr.getImage(IMAGE_PROJECT_ERROR);
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ProjectNode.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ProjectNode.java
new file mode 100644
index 000000000..3d6914953
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/ProjectNode.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.tree;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+import org.eclipse.ui.externaltools.internal.ant.antview.preferences.Preferences;
+
+public class ProjectNode extends TreeNode {
+ public ProjectNode(String filename, String name) {
+ super(name);
+ setProperty("BuildFile", filename);
+
+ IPath path = new Path(filename);
+ path = path.setDevice("");
+ int trimCount = path.matchingFirstSegments(Platform.getLocation());
+ if (trimCount > 0)
+ path = path.removeFirstSegments(trimCount);
+ path.removeLastSegments(1);
+ setProperty("DisplayPath", path.toString());
+ }
+
+ public Image getImage() {
+ return ResourceMgr.getImage(IMAGE_PROJECT);
+ }
+
+ public String decorateText(String text) {
+ String prefProjDisplay = Preferences.getString(PREF_PROJECT_DISPLAY);
+ if (prefProjDisplay.equals(PROJECT_DISPLAY_DIRLOC))
+ return (String) getProperty("DisplayPath");
+ if (prefProjDisplay.equals(PROJECT_DISPLAY_NAMEATTR))
+ return super.getText();
+ if (prefProjDisplay.equals(PROJECT_DISPLAY_BOTH))
+ return (String) getProperty("DisplayPath")
+ + " "
+ + "["
+ + super.getText()
+ + "]";
+ return ResourceMgr.getString("Tree.Unknown");
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/TargetNode.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/TargetNode.java
new file mode 100644
index 000000000..7c8143db2
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/TargetNode.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.tree;
+
+import java.util.ListIterator;
+import java.util.Vector;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+import org.eclipse.ui.externaltools.internal.ant.antview.preferences.Preferences;
+
+
+public class TargetNode extends TreeNode {
+ public TargetNode(String filename, Target target) {
+ super(target.getName());
+ setProperty("TargetObject", target);
+ setProperty("BuildFile", filename);
+ if (null != target.getDescription())
+ setProperty("Description", target.getDescription());
+ Project project = target.getProject();
+ if (target.getName().equals(project.getDefaultTarget())) {
+ setProperty("isDefaultTarget", "True");
+ } else {
+ setProperty("isDefaultTarget", "False");
+ }
+ Vector topoSort = project.topoSort(target.getName(), project.getTargets());
+ int n = topoSort.indexOf(target) + 1;
+ while (topoSort.size() > n)
+ topoSort.remove(topoSort.size() - 1);
+ topoSort.trimToSize();
+ setProperty("TopoVector", topoSort);
+ }
+
+ public void setSelected() {
+ if (isSelected())
+ setSelected(false);
+ else
+ setSelected(true);
+ }
+
+ public void setSelected(boolean selected) {
+ Vector targetVector = (Vector) getRoot().getProperty("TargetVector");
+
+ if (null != targetVector) {
+ if (selected) {
+ targetVector.add(this);
+ } else {
+ targetVector.remove(this);
+ }
+ }
+ }
+
+ public boolean isSelected() {
+ Vector targetVector = (Vector) getRoot().getProperty("TargetVector");
+ return targetVector.contains(this);
+ }
+
+ public Image getImage() {
+ if (isSelected()) {
+ return ResourceMgr.getImage(IMAGE_TARGET_SELECTED);
+ } else {
+ return ResourceMgr.getImage(IMAGE_TARGET_DESELECTED);
+ }
+ }
+
+ public String decorateText(String text) {
+ // Text
+ text = ResourceMgr.getString("Tree.Unknown");
+ String prefTargetDisplay = Preferences.getString(PREF_TARGET_DISPLAY);
+ String description = (String) getProperty("Description");
+ if (prefTargetDisplay.equals(TARGET_DISPLAY_DESCATTR) && null != description)
+ text = description;
+ if (prefTargetDisplay.equals(TARGET_DISPLAY_NAMEATTR))
+ text = super.getText();
+ if (prefTargetDisplay.equals(TARGET_DISPLAY_BOTH))
+ text = super.getText()
+ + " "
+ + "["
+ + (null != description ? description : "")
+ + "]";
+ // Decorate Text
+ if (((String)getProperty("isDefaultTarget")).equals("True")) {
+ text += " "
+ + "("
+ + ResourceMgr.getString("Tree.DefaultTarget")
+ + ")";
+ }
+ TreeNode treeRoot = getRoot();
+ Vector targetVector = (Vector) treeRoot.getProperty("TargetVector");
+ if (null == targetVector) {
+ return text;
+ }
+ if (isSelected()) {
+ int n = targetVector.indexOf(this);
+ if (n >= 0) {
+ text += " " + "[" + (n + 1) + "]";
+ }
+ } else {
+ Target target = (Target) getProperty("TargetObject");
+ ListIterator targets = targetVector.listIterator();
+ while (targets.hasNext()) {
+ TreeNode targetItem = (TreeNode) targets.next();
+ Vector topoVector = (Vector) targetItem.getProperty("TopoVector");
+ if (topoVector.contains(target)) {
+ text += " " + "[" + "*" + "]";
+ return text;
+ }
+ }
+ }
+ return text;
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/TreeNode.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/TreeNode.java
new file mode 100644
index 000000000..f3b2e8b78
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/tree/TreeNode.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.tree;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.core.IAntViewConstants;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+
+public class TreeNode implements IAdaptable, IAntViewConstants {
+
+ private TreeNode parent = null;
+ private ArrayList children = null;
+ private Hashtable property = null;
+ private boolean selected = false;
+ private String text;
+
+ /**
+ * Method TreeObject.
+ * @param text
+ */
+ public TreeNode(String text) {
+ property = new Hashtable();
+ children = new ArrayList();
+ this.text = text;
+ }
+ /**
+ * Method setParent.
+ * @param parent
+ */
+ public void setParent(TreeNode parent) {
+ this.parent = parent;
+ }
+ /**
+ * Method getParent.
+ * @return TreeObject
+ */
+ public TreeNode getParent() {
+ return parent;
+ }
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ return getText();
+ }
+ /**
+ * Method getAdapter.
+ * @param key
+ * @return Object
+ */
+ public Object getAdapter(Class key) {
+ return null;
+ }
+ /**
+ * Method addChild.
+ * @param child
+ */
+ public void addChild(TreeNode child) {
+ children.add(child);
+ child.setParent(this);
+ }
+ /**
+ * Method removeChild.
+ * @param child
+ */
+ public void removeChild(TreeNode child) {
+ children.remove(child);
+ child.setParent(null);
+ }
+ /**
+ * Method getChildren.
+ * @return TreeObject[]
+ */
+ public TreeNode[] getChildren() {
+ return (TreeNode[]) children.toArray(new TreeNode[children.size()]);
+ }
+ /**
+ * Method hasChildren.
+ * @return boolean
+ */
+ public boolean hasChildren() {
+ return children.size() > 0;
+ }
+ /**
+ * Sets the name.
+ * @param name The name to set
+ */
+ public void setText(String text) {
+ this.text = text;
+ }
+ /**
+ * Returns the name.
+ * @return String
+ */
+ public String getText() {
+ return text;
+ }
+ /**
+ * Method decoreateText.
+ * @param text
+ * @return String
+ */
+ public String decorateText(String text) {
+ return text;
+ }
+ /**
+ * Returns the selected.
+ * @return boolean
+ */
+ public boolean isSelected() {
+ return selected;
+ }
+ /**
+ * Sets the selected.
+ * @param selected The selected to set
+ */
+ public void setSelected(boolean selected) {
+ this.selected = selected;
+ }
+ /**
+ * Method setSelected.
+ */
+ public void setSelected() {
+ if (selected) {
+ selected = false;
+ } else {
+ selected = true;
+ }
+ }
+ /**
+ * Method getProperty.
+ * @param key
+ * @return Object
+ */
+ public Object getProperty(String key) {
+ return property.get(key);
+ }
+ /**
+ * Sets the property.
+ * @param property The property to set
+ */
+ public void setProperty(String key, Object data) {
+ property.put(key,data);
+ }
+ /**
+ * Method removeProperty.
+ * @param key
+ */
+ public void removeProperty(String key) {
+ property.remove(key);
+ }
+ /**
+ * Method getImage.
+ * @return Image
+ */
+ public Image getImage() {
+ return ResourceMgr.getImage(IMAGE_DEFAULT);
+ }
+ /**
+ * Method decorateImage.
+ * @param image
+ * @return Image
+ */
+ public Image decorateImage(Image image) {
+ return image;
+ }
+ /**
+ * Method getRoot.
+ * @return TreeNode
+ */
+ public TreeNode getRoot() {
+ TreeNode treeRoot = this;
+ while (null != treeRoot.getParent()) {
+ treeRoot = treeRoot.getParent();
+ }
+ return treeRoot;
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntView.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntView.java
new file mode 100644
index 000000000..e74f0dd91
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntView.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.views;
+
+import java.util.Hashtable;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.DecoratingLabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.externaltools.internal.ant.antview.actions.ClearAction;
+import org.eclipse.ui.externaltools.internal.ant.antview.actions.MsgLvlAction;
+import org.eclipse.ui.externaltools.internal.ant.antview.actions.RefreshAction;
+import org.eclipse.ui.externaltools.internal.ant.antview.actions.RunAction;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.IAntViewConstants;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+import org.eclipse.ui.externaltools.internal.ant.antview.events.OpenListener;
+import org.eclipse.ui.externaltools.internal.ant.antview.preferences.Preferences;
+import org.eclipse.ui.part.DrillDownAdapter;
+import org.eclipse.ui.part.ViewPart;
+
+public class AntView extends ViewPart {
+ {
+ ResourceMgr.init();
+ Preferences.setDefaults();
+ }
+ private Hashtable actionMap;
+ private TreeViewer viewer = null;
+ private AntViewContentProvider viewContentProvider = null;
+
+ /**
+ * The constructor.
+ */
+ public AntView() {
+ }
+ /**
+ * @see org.eclipse.ui.IWorkbenchPart#dispose()
+ */
+ public void dispose() {
+ ResourceMgr.dispose();
+ super.dispose();
+ }
+ /**
+ * @see org.eclipse.ui.IWorkbenchPart#createPartControl(Composite)
+ */
+ public void createPartControl(Composite parent) {
+ // Build Components
+ makeActions();
+ viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+// viewer.setUseHashlookup(true);
+ viewContentProvider = new AntViewContentProvider();
+ AntViewLabelProvider viewLabelProvider = new AntViewLabelProvider();
+ DrillDownAdapter drillDownAdapter = new DrillDownAdapter(viewer);
+ // Connect Components
+ viewer.setContentProvider(viewContentProvider);
+ viewer.setLabelProvider(new DecoratingLabelProvider(viewLabelProvider, viewLabelProvider));
+ viewer.setSorter(new AntViewSorter());
+ viewer.setInput(ResourcesPlugin.getWorkspace());
+ viewer.addOpenListener(new OpenListener());
+ viewer.addFilter(new AntViewFilter());
+ hookContextMenu();
+ contributeToActionBars();
+ // Check Preference DisplayLevel Action
+ String action = Preferences.getString(IAntViewConstants.PREF_ANT_DISPLAY);
+ ((Action) (actionMap.get(action))).run();
+ }
+ /**
+ * Method hookContextMenu.
+ */
+ private void hookContextMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ AntView.this.mainContextMenu(manager);
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+ /**
+ * Method contributeToActionBars.
+ */
+ private void contributeToActionBars() {
+ IActionBars actionBars = getViewSite().getActionBars();
+
+ IToolBarManager toolBarMgr = actionBars.getToolBarManager();
+ toolBarMgr.add((Action)actionMap.get(IAntViewConstants.IMAGE_RUN));
+ toolBarMgr.add((Action)actionMap.get(IAntViewConstants.IMAGE_CLEAR));
+ toolBarMgr.add((Action)actionMap.get(IAntViewConstants.IMAGE_REFRESH));
+
+ IMenuManager menuMgr = actionBars.getMenuManager();
+ MenuManager submenu =
+ new MenuManager(ResourceMgr.getString("Label.DisplayLevel"));
+ menuMgr.add(submenu);
+ submenu.setRemoveAllWhenShown(true);
+ submenu.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager mgr) {
+ msgLvlContextMenu(mgr);
+ }
+ });
+ msgLvlContextMenu(submenu);
+
+ actionBars.updateActionBars();
+ }
+ /**
+ * msgLvlContextMenu.
+ * @param manager
+ */
+ private void msgLvlContextMenu(IMenuManager manager) {
+ manager.add((Action)actionMap.get(IAntViewConstants.ANT_DISPLAYLVL_ERROR));
+ manager.add((Action)actionMap.get(IAntViewConstants.ANT_DISPLAYLVL_WARN));
+ manager.add((Action)actionMap.get(IAntViewConstants.ANT_DISPLAYLVL_INFO));
+ manager.add((Action)actionMap.get(IAntViewConstants.ANT_DISPLAYLVL_VERBOSE));
+ manager.add((Action)actionMap.get(IAntViewConstants.ANT_DISPLAYLVL_DEBUG));
+ }
+ /**
+ * Method mainContextMenu.
+ * @param manager
+ */
+ private void mainContextMenu(IMenuManager manager) {
+ manager.add((Action)actionMap.get(IAntViewConstants.IMAGE_RUN));
+ manager.add((Action)actionMap.get(IAntViewConstants.IMAGE_REFRESH));
+ manager.add((Action)actionMap.get(IAntViewConstants.IMAGE_CLEAR));
+
+ MenuManager submenu =
+ new MenuManager(ResourceMgr.getString("Label.DisplayLevel"));
+ manager.add(submenu);
+ msgLvlContextMenu(submenu);
+ manager.add(new Separator());
+ // Other plug-ins can contribute there actions here
+ manager.add(new Separator("Additions"));
+ }
+ /**
+ * Method makeActions.
+ */
+ private void makeActions() {
+ actionMap = new Hashtable();
+
+ actionMap.put(
+ IAntViewConstants.IMAGE_RUN,
+ new RunAction(
+ ResourceMgr.getString("Label.Run"),
+ ResourceMgr.getImageDescriptor(IAntViewConstants.IMAGE_RUN)));
+ actionMap.put(
+ IAntViewConstants.IMAGE_REFRESH,
+ new RefreshAction(
+ ResourceMgr.getString("Label.Refresh"),
+ ResourceMgr.getImageDescriptor(IAntViewConstants.IMAGE_REFRESH)));
+ actionMap.put(
+ IAntViewConstants.IMAGE_CLEAR,
+ new ClearAction(
+ ResourceMgr.getString("Label.Clear"),
+ ResourceMgr.getImageDescriptor(IAntViewConstants.IMAGE_CLEAR)));
+ actionMap.put(
+ IAntViewConstants.ANT_DISPLAYLVL_ERROR,
+ new MsgLvlAction(
+ ResourceMgr.getString("DisplayLevel.Error"),
+ IAntViewConstants.ANT_DISPLAYLVL_ERROR));
+ actionMap.put(
+ IAntViewConstants.ANT_DISPLAYLVL_WARN,
+ new MsgLvlAction(
+ ResourceMgr.getString("DisplayLevel.Warn"),
+ IAntViewConstants.ANT_DISPLAYLVL_WARN));
+ actionMap.put(
+ IAntViewConstants.ANT_DISPLAYLVL_INFO,
+ new MsgLvlAction(
+ ResourceMgr.getString("DisplayLevel.Info"),
+ IAntViewConstants.ANT_DISPLAYLVL_INFO));
+ actionMap.put(
+ IAntViewConstants.ANT_DISPLAYLVL_VERBOSE,
+ new MsgLvlAction(
+ ResourceMgr.getString("DisplayLevel.Verbose"),
+ IAntViewConstants.ANT_DISPLAYLVL_VERBOSE));
+ actionMap.put(
+ IAntViewConstants.ANT_DISPLAYLVL_DEBUG,
+ new MsgLvlAction(
+ ResourceMgr.getString("DisplayLevel.Debug"),
+ IAntViewConstants.ANT_DISPLAYLVL_DEBUG));
+ }
+
+ /**
+ * @see org.eclipse.ui.IWorkbenchPart#setFocus()
+ */
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+ /**
+ * Method getViewContentProvider.
+ * @return AntViewContentProvider
+ */
+ public AntViewContentProvider getViewContentProvider() {
+ return viewContentProvider;
+ }
+ /**
+ * Method getMsgLevelAction.
+ * @param action
+ * @return Action
+ */
+ public Action getMsgLevelAction(String action) {
+ return (Action) (actionMap.get(action));
+ }
+ /**
+ * Method refresh.
+ */
+ public void refresh() {
+ viewer.refresh();
+ }
+ /**
+ * Method getTreeViewer.
+ * @return TreeViewer
+ */
+ public TreeViewer getTreeViewer() {
+ return viewer;
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewContentProvider.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewContentProvider.java
new file mode 100644
index 000000000..9eaf4a054
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewContentProvider.java
@@ -0,0 +1,440 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.views;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Vector;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.eclipse.ant.core.AntRunner;
+import org.eclipse.ant.core.TargetInfo;
+import org.eclipse.core.internal.resources.File;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IResourceVisitor;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.IAntViewConstants;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+import org.eclipse.ui.externaltools.internal.ant.antview.preferences.Preferences;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.ElementNode;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.ErrorNode;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.ProjectErrorNode;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.ProjectNode;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.TargetNode;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.TreeNode;
+import org.eclipse.ui.externaltools.internal.ant.model.AntUtil;
+
+public class AntViewContentProvider implements IStructuredContentProvider, ITreeContentProvider, IAntViewConstants, IResourceChangeListener {
+
+ public static final String SEP_KEYVAL = "|";
+ public static final String SEP_REC = ";";
+
+ private TreeNode treeRoot = null;
+
+ /**
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer, Object, Object)
+ */
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ }
+ /**
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ workspace.removeResourceChangeListener(this);
+ saveTargetVector();
+ }
+ /**
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object)
+ */
+ public Object[] getElements(Object parent) {
+ if (parent.equals(ResourcesPlugin.getWorkspace())) {
+ if (treeRoot == null)
+ initialize();
+ return getChildren(treeRoot);
+ }
+ if (parent instanceof TreeNode)
+ return getChildren(parent);
+ return new Object[0];
+ }
+ /**
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(Object)
+ */
+
+ public Object getParent(Object child) {
+ if (child instanceof TreeNode) {
+ return ((TreeNode) child).getParent();
+ }
+ return null;
+ }
+ /**
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(Object)
+ */
+ public Object[] getChildren(Object parent) {
+ if (parent instanceof TreeNode) {
+ if (((TreeNode) parent).hasChildren()) {
+ return ((TreeNode) parent).getChildren();
+ }
+ }
+ return new Object[0];
+ }
+ /**
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(Object)
+ */
+ public boolean hasChildren(Object parent) {
+ if (parent instanceof TreeNode)
+ return ((TreeNode) parent).hasChildren();
+ return false;
+ }
+
+ /**
+ * Method reset.
+ */
+ public void reset() {
+ saveTargetVector();
+ clear();
+ treeRoot = null;
+ }
+ /**
+ * Method clear.
+ */
+ public void clear() {
+ Vector targetVector = (Vector) treeRoot.getProperty("TargetVector");
+ if (null == targetVector)
+ return;
+ Enumeration targets = targetVector.elements();
+ while (targets.hasMoreElements()) {
+ TreeNode item = (TreeNode) targets.nextElement();
+ item.setSelected(false);
+ }
+ targetVector.removeAllElements();
+ }
+ /**
+ * Method getTargetVector.
+ * @return Vector
+ */
+ public Vector getTargetVector() {
+ return (Vector) treeRoot.getProperty("TargetVector");
+ }
+ /**
+ * Method initialize.
+ */
+ private void initialize() {
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ workspace.removeResourceChangeListener(this);
+
+ treeRoot = new TreeNode("");
+ treeRoot.setProperty("TargetVector", new Vector());
+
+ final ArrayList buildFileList = new ArrayList();
+ final String buildFileName = Preferences.getString(IAntViewConstants.PREF_ANT_BUILD_FILE);
+ IResourceVisitor buildVisitor = new IResourceVisitor() {
+ public boolean visit(IResource res) throws CoreException {
+ if (res instanceof File) {
+ if (res.getName().equalsIgnoreCase(buildFileName)) {
+ IPath file = (IPath) ((IFile) res).getLocation();
+ buildFileList.add(file);
+ }
+ }
+ return true;
+ }
+ };
+
+ try {
+ IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
+ workspaceRoot.accept(buildVisitor);
+ } catch (CoreException e) {
+ workspace.addResourceChangeListener(this);
+ return;
+ }
+
+ if (0 == buildFileList.size()) {
+ treeRoot.addChild(new ErrorNode(ResourceMgr.getString("Tree.NoProjects") + " " + "(" + Preferences.getString(PREF_ANT_BUILD_FILE) + ")"));
+ workspace.addResourceChangeListener(this);
+ return;
+ }
+
+ Iterator buildFiles = buildFileList.iterator();
+ while (buildFiles.hasNext()) {
+ IPath file = (IPath) buildFiles.next();
+ treeRoot.addChild(parseAntBuildFile(file.toString()));
+ }
+ restoreTargetVector();
+ workspace.addResourceChangeListener(this);
+ }
+ /**
+ * Method parseAntBuildFile.
+ * @param filename
+ * @return TreeNode
+ */
+ private TreeNode parseAntBuildFile(String filename) {
+ // Document document;
+ // try {
+ // SAXBuilder builder = new SAXBuilder();
+ // document = builder.build(new java.io.File(filename));
+ // } catch (JDOMException e) {
+ // String err = "";
+ // try {
+ // SAXParseException cause = (SAXParseException) e.getCause();
+ // err = ResourceMgr.getString("Tree.Line")
+ // + ": "
+ // + cause.getLineNumber()
+ // + " - "
+ // + cause.getLocalizedMessage();
+ // } catch (ClassCastException cce) {
+ // err = e.getLocalizedMessage();
+ // }
+ // return new ProjectErrorNode(filename, err);
+ // }
+ //
+ // Element root = document.getRootElement();
+ // if (!(root.getName().equals("project"))) {
+ // return new ProjectErrorNode(filename, ResourceMgr.getString("Tree.NoProjectElement"));
+ // }
+ // if (null == root.getAttribute("default")) {
+ // return new ProjectErrorNode(filename, ResourceMgr.getString("Tree.NoDefaultTarget"));
+ // }
+ //
+ // Project project = new Project();
+ // project.setDefault(root.getAttribute("default").getValue());
+ // if (null != root.getAttribute("name")) {
+ // project.setName(root.getAttribute("name").getValue());
+ // } else {
+ // project.setName(ResourceMgr.getString("Tree.Unknown"));
+ // }
+ // Iterator xmlTargets = root.getChildren("target").iterator();
+ // while (xmlTargets.hasNext()) {
+ // Element element = (Element) xmlTargets.next();
+ // if (null == element.getAttribute("name")) {
+ // continue;
+ // }
+ // Target target = new Target();
+ // target.setName(element.getAttribute("name").getValue());
+ // if (null != element.getAttribute("depends")) {
+ // target.setDepends(element.getAttribute("depends").getValue());
+ // }
+ // if (null != element.getAttribute("description")) {
+ // target.setDescription(element.getAttribute("description").getValue());
+ // }
+ // project.addTarget(element.getAttribute("name").getValue(), target);
+ // }
+
+ AntRunner runner = new AntRunner();
+ runner.setBuildFileLocation(filename);
+ TargetInfo[] infos = null;
+ try {
+ infos = runner.getAvailableTargets();
+ } catch (CoreException e) {
+ return new ProjectErrorNode(filename, "An exception occurred retrieving targets: " + e.getMessage());
+ }
+ if (infos.length < 1) {
+ return new ProjectErrorNode(filename, "No targets found");
+ }
+ Project project = new Project();
+ project.setName(infos[0].getProject());
+ for (int i = 0; i < infos.length; i++) {
+ TargetInfo info = infos[i];
+ if (info.isDefault()) {
+ project.setDefault(info.getName());
+ }
+ Target target = new Target();
+ target.setName(info.getName());
+ String[] dependencies = info.getDependencies();
+ StringBuffer depends = new StringBuffer();
+ int numDependencies= dependencies.length;
+ if (numDependencies > 0) {
+ // Onroll the loop to avoid trailing comma
+ depends.append(dependencies[0]);
+ }
+ for (int j = 1; j < numDependencies; j++) {
+ depends.append(',').append(dependencies[j]);
+ }
+ target.setDepends(depends.toString());
+ target.setDescription(info.getDescription());
+ project.addTarget(target);
+ }
+ if (project.getDefaultTarget() == null) {
+ return new ProjectErrorNode(filename, ResourceMgr.getString("Tree.NoProjectElement"));
+ }
+
+ TreeNode projectNode = new ProjectNode(filename, project.getName());
+ Enumeration projTargets = project.getTargets().elements();
+ while (projTargets.hasMoreElements()) {
+ Target target = (Target) projTargets.nextElement();
+ // Target Node -----------------
+ TreeNode targetNode = new TargetNode(filename, target);
+ projectNode.addChild(targetNode);
+ // Dependency Sub-Node ---------
+ TreeNode dependencyNode = new ElementNode(ResourceMgr.getString("Tree.Dependencies"));
+ targetNode.addChild(dependencyNode);
+ Enumeration dependency = target.getDependencies();
+ while (dependency.hasMoreElements()) {
+ dependencyNode.addChild(new ElementNode((String) dependency.nextElement()));
+ }
+ if (!dependencyNode.hasChildren()) {
+ dependencyNode.addChild(new ElementNode(ResourceMgr.getString("Tree.None")));
+ }
+ // Execution Path Sub-Node -------
+ TreeNode topoNode = new ElementNode(ResourceMgr.getString("Tree.ExecuteOrder"));
+ targetNode.addChild(topoNode);
+ Vector topoSort = project.topoSort(target.getName(), project.getTargets());
+ int n = topoSort.indexOf(target) + 1;
+ while (topoSort.size() > n)
+ topoSort.remove(topoSort.size() - 1);
+ topoSort.trimToSize();
+ ListIterator topoElements = topoSort.listIterator();
+ while (topoElements.hasNext()) {
+ int i = topoElements.nextIndex();
+ Target topoTask = (Target) topoElements.next();
+ topoNode.addChild(new ElementNode((i + 1) + ":" + topoTask.getName()));
+ }
+ }
+ return projectNode;
+ }
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ if (event.getType() != IResourceChangeEvent.POST_CHANGE)
+ return;
+
+ IResourceDelta delta = event.getDelta();
+ if (delta == null)
+ return;
+
+ final ArrayList deltaResources = new ArrayList();
+ final String buildFileName = Preferences.getString(IAntViewConstants.PREF_ANT_BUILD_FILE);
+ IResourceDeltaVisitor visitor = new IResourceDeltaVisitor() {
+ public boolean visit(IResourceDelta delta) {
+ if (delta.getKind() != IResourceDelta.CHANGED)
+ return true;
+ if (0 == (delta.getFlags() & IResourceDelta.CONTENT))
+ return true;
+ IResource resource = delta.getResource();
+
+ if (resource.getType() == IResource.FILE && buildFileName.equalsIgnoreCase(resource.getName())) {
+ deltaResources.add(resource);
+ }
+ return true;
+ }
+ };
+
+ try {
+ delta.accept(visitor);
+ } catch (CoreException e) {
+ return;
+ }
+
+ if (0 == deltaResources.size())
+ return;
+
+ saveTargetVector();
+ clear();
+ Iterator changedResources = deltaResources.iterator();
+ while (changedResources.hasNext()) {
+ IResource fileResource = (IResource) changedResources.next();
+ String buildFile = fileResource.getLocation().toString();
+ TreeNode rootChild[] = treeRoot.getChildren();
+ for (int i = 0; i < rootChild.length; i++) {
+ String nodeBuildFile = (String) rootChild[i].getProperty("BuildFile");
+ if (null == nodeBuildFile)
+ continue;
+ if (buildFile.equals(nodeBuildFile)) {
+ treeRoot.removeChild(rootChild[i]);
+ break;
+ }
+ }
+ treeRoot.addChild(parseAntBuildFile(buildFile));
+ }
+ restoreTargetVector();
+ AntView antView = AntUtil.getAntView();
+ if (antView != null) {
+ antView.refresh();
+ }
+ }
+
+ private void saveTargetVector() {
+ Vector targetVector = (Vector) treeRoot.getProperty("TargetVector");
+ if (null == targetVector) {
+ return;
+ }
+ String targets = "";
+ ListIterator targetList = targetVector.listIterator();
+ while (targetList.hasNext()) {
+ TreeNode target = (TreeNode) targetList.next();
+ targets += target.getProperty("BuildFile") + SEP_KEYVAL + target.getText() + SEP_REC;
+ }
+ Preferences.setString(PREF_TARGET_VECTOR, targets);
+ }
+
+ private void restoreTargetVector() {
+ HashMap targetMap = new HashMap();
+ TreeNode rootChildren[] = treeRoot.getChildren();
+ for (int i = 0; i < rootChildren.length; i++) {
+ TreeNode targetNodes[] = rootChildren[i].getChildren();
+ for (int j = 0; j < targetNodes.length; j++) {
+ targetMap.put(targetNodes[j].getProperty("BuildFile") + SEP_KEYVAL + targetNodes[j].getText(), targetNodes[j]);
+ }
+ }
+
+ String targetsPref = Preferences.getString(PREF_TARGET_VECTOR);
+ if (null == targetsPref || targetsPref.equals("")) {
+ return;
+ }
+ String targets[] = split(targetsPref, SEP_REC);
+ for (int i = 0; i < targets.length; i++) {
+ if (null == targets[i] || targets[i].equals(""))
+ continue;
+ TreeNode targetNode = (TargetNode) targetMap.get(targets[i]);
+ if (null == targetNode || targetNode.isSelected())
+ continue;
+ targetNode.setSelected(true);
+ //-------------------
+ // TreeViewer viewer = AntviewPlugin.getDefault().getAntView().getTreeViewer();
+ // viewer.expandToLevel(targetNode, 2);
+ //--------------------
+ }
+ AntView view = AntUtil.getAntView();
+ if (view != null) {
+ view.refresh();
+ }
+ }
+ private String[] split(String string, String regExp) {
+ List strings = new ArrayList();
+ int start = string.indexOf(regExp);
+ int stop = -1;
+ while (start >= 0) {
+ stop = string.indexOf(regExp, start + 1);
+ if (stop > start) {
+ strings.add(string.substring(start, stop));
+ } else {
+ strings.add(string.substring(start));
+ }
+ }
+ String[] array = new String[strings.size()];
+ strings.toArray(array);
+ return array;
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewFilter.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewFilter.java
new file mode 100644
index 000000000..0f076751e
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewFilter.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.views;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.core.IAntViewConstants;
+import org.eclipse.ui.externaltools.internal.ant.antview.preferences.Preferences;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.TargetNode;
+
+public class AntViewFilter extends ViewerFilter implements IAntViewConstants {
+ public AntViewFilter() {
+ super();
+ }
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (element instanceof TargetNode) {
+ if (TARGET_FILTER_DESCATTR.equals(Preferences.getString(PREF_TARGET_FILTER))) {
+ if (null == ((TargetNode) element).getProperty("Description"))
+ return false;
+ }
+ }
+ return true;
+ }
+}
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewLabelProvider.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewLabelProvider.java
new file mode 100644
index 000000000..5fe25d6d5
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewLabelProvider.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2002, Roscoe Rush. All Rights Reserved.
+ *
+ * The contents of this file are subject to the Common Public License
+ * Version 0.5 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.eclipse.org/
+ *
+ */
+package org.eclipse.ui.externaltools.internal.ant.antview.views;
+
+import org.eclipse.jface.viewers.ILabelDecorator;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.ui.externaltools.internal.ant.antview.core.IAntViewConstants;
+import org.eclipse.ui.externaltools.internal.ant.antview.core.ResourceMgr;
+import org.eclipse.ui.externaltools.internal.ant.antview.tree.TreeNode;
+
+public class AntViewLabelProvider extends LabelProvider implements ILabelDecorator, IAntViewConstants {
+ /**
+ * Method getText.
+ * @param obj
+ * @return String
+ */
+ public String getText(Object obj) {
+ try {
+ return ((TreeNode) obj).getText();
+ } catch (ClassCastException e) {
+ return ResourceMgr.getString("Tree.Unknown");
+ }
+ }
+ /**
+ * Method getImage.
+ * @param obj
+ * @return Image
+ */
+ public Image getImage(Object obj) {
+ try {
+ return ((TreeNode) obj).getImage();
+ } catch (ClassCastException e) {
+ return ResourceMgr.getImage(IMAGE_DEFAULT);
+ }
+ }
+ /**
+ * Method decorateText.
+ * @param text
+ * @param obj
+ * @return String
+ */
+ public String decorateText(String text, Object obj) {
+ try {
+ return ((TreeNode) obj).decorateText(text);
+ } catch (ClassCastException e) {
+ return text;
+ }
+ }
+ /**
+ * Method decorateImage.
+ * @param image
+ * @param obj
+ * @return Image
+ */
+ public Image decorateImage(Image image, Object obj) {
+ try {
+ return ((TreeNode) obj).decorateImage(image);
+ } catch (ClassCastException e) {
+ return image;
+ }
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewSorter.java b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewSorter.java
new file mode 100644
index 000000000..ef2cf9a52
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Ant View/org/eclipse/ui/externaltools/internal/ant/antview/views/AntViewSorter.java
@@ -0,0 +1,7 @@
+package org.eclipse.ui.externaltools.internal.ant.antview.views;
+
+import org.eclipse.jface.viewers.ViewerSorter;
+
+public class AntViewSorter extends ViewerSorter {
+}
+
diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/messages.properties b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/messages.properties
index e241e4155..b71e74ecb 100644
--- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/messages.properties
+++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/messages.properties
@@ -173,7 +173,9 @@ AntOptionGroupPropertyPage.promptForArgumentLabel = &Prompt for targets and argu
AntPreferencePage.description = &Customize the classpath, tasks and types used when\nrunning Ant build files from Eclipse.
AntClasspathPage.addFolderButtonTitle = Add &Folder...
-AntClasspathPage.addJarButtonTitle = Add &JAR...
+AntClasspathPage.addJarButtonTitle = Add &JARs...
+AntClasspathPage.upButtonTitle = &Up
+AntClasspathPage.downButtonTitle = Do&wn
AntClasspathPage.removeButtonTitle = &Remove
AntClasspathPage.title = C&lasspath
@@ -358,7 +360,11 @@ AntTargetLabelProvider.defaultTarget = Default
NullBuildLogger.buildException = BUILD FAILED: {0}
-AddTaskDialog.name = &Name:
-AddTaskDialog.class = &Class:
-AddTaskDialog.library = &Library:
+AddCustomDialog.name = &Name:
+AddCustomDialog.class = &Class:
+AddCustomDialog.library = &Library:
+
+AntInputHandler.Ant_Input_Request_1=Ant Input Request
+AntInputHandler.Invalid_input_2=Invalid input
+AntInputHandler.Unable_able_to_respond_to_<input>_request_4=Unable able to respond to <input> request
diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/AntRunActionDelegate.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/AntRunActionDelegate.java
index aada60d79..4a48b46c2 100644
--- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/AntRunActionDelegate.java
+++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/AntRunActionDelegate.java
@@ -28,8 +28,9 @@ public class AntRunActionDelegate extends ActionDelegate implements IObjectActio
* Method declared on IActionDelegate.
*/
public void run(IAction action) {
- if (part != null)
+ if (part != null && selectedFile != null) {
new AntAction(selectedFile, part.getSite().getWorkbenchWindow()).run();
+ }
}
/* (non-Javadoc)
diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/IExternalToolsUIConstants.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/IExternalToolsUIConstants.java
new file mode 100644
index 000000000..4eb7ac3db
--- /dev/null
+++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/IExternalToolsUIConstants.java
@@ -0,0 +1,18 @@
+package org.eclipse.ui.externaltools.internal.ui;
+
+import org.eclipse.ui.externaltools.model.IExternalToolConstants;
+
+/**********************************************************************
+Copyright (c) 2002 IBM Corp. and others. All rights reserved.
+This file is made available under the terms of the Common Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/cpl-v10.html
+Contributors:
+**********************************************************************/
+
+public interface IExternalToolsUIConstants {
+
+ public static final String DIALOGSTORE_LASTEXTJAR= IExternalToolConstants.PLUGIN_ID + ".lastextjar"; //$NON-NLS-1$
+
+}
diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/model/IExternalToolConstants.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/model/IExternalToolConstants.java
index 58123c714..6ad0bece2 100644
--- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/model/IExternalToolConstants.java
+++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/model/IExternalToolConstants.java
@@ -63,6 +63,11 @@ public interface IExternalToolConstants {
* Log Console view identifier (value <code>org.eclipse.ui.externaltools.LogConsoleView</code>).
*/
public static final String LOG_CONSOLE_VIEW_ID = PLUGIN_ID + ".LogConsoleView"; //$NON-NLS-1$
+
+ /**
+ * Ant View identifier (value <code>org.eclipse.ui.externaltools.AntView</code>).
+ */
+ public static final String ANT_VIEW_ID = PLUGIN_ID + ".AntView"; //$NON-NLS-1$
// ------- Tool Types -------
diff --git a/org.eclipse.ui.externaltools/Release-Notes.txt b/org.eclipse.ui.externaltools/Release-Notes.txt
new file mode 100644
index 000000000..dedeacc64
--- /dev/null
+++ b/org.eclipse.ui.externaltools/Release-Notes.txt
@@ -0,0 +1,94 @@
+
+
+AntView Eclipse plug-in
+------------------------------------
+An eclipse plug-in to run ANT build file targets from within the IDE.
+
+Release Notes
+-----------------------
+2002.10.30
+ Integrated Ant View into Eclipse repository
+2002.09.05
+ Release Candidate 2.2.6
+ Fixes:
+ 1) Tree View errors on build files with custom task/path requirements
+ 2) executing run with no targets selected now produces a log message
+2002.08.15
+ Release 2.2.5
+ Fixes:
+ 1) Preferences take immediate effect on apply or ok.
+ 2) Ant classpath inheritence fixed via R2.0 AntRunner class.
+ 3) Project topsort no longer generates debug/LogC Console output
+ 4) Problem using JDK 1.4.0_01 and Ant 1.5 corrected.
+ Features:
+ 1) Target filter - Filter visible targets based on target description attribute.
+ 2) Added identification of target execute children.
+ e.g. select a target and all other targets that would be executed
+ that have not already been selected will be indicated by a '*'
+ 3) Alternate Ant build file name. Configurable via preferences page,
+ default is build.xml
+ 4) Ant build file parsing errors appear in viewer tree.
+ Identified with red icon and error description node with line number.
+ 5) Target node labels are configurable via preferences page.
+ a) Target name
+ b) Target description attribute
+ c) Both
+ 6) Ant execution is via Eclipse 2.0 AntRunner class with Progress dialog.
+ This configures ant classpath from Eclipse Ant Core preferences page with
+ Eclipse Ant Core tasks and types.
+ 7) Viewer will now display an error node instead of a blank viewer when
+ no build files are found.
+
+2002.07.15
+ Release 2.0.1
+ Fixes:
+ 1) eclipse.running property set for ANT build
+ 2) supports project directory outside of eclipse home
+ New Features:
+ 1) project node labels now have the option of being
+ a) directory location,
+ b) project name attribute,
+ c) both
+ 2) preference page to modify project node labeling.
+
+2002.07.05
+ Release 2.0.0
+ Rewrite to Eclipse R2.0 IDE
+ Removed Log4J requirement
+ Added Ant Target dependency and target execution information
+ Change Ant output from R1.0 AntConsole to R2.0 LogConsole
+ Removed preferences page
+
+2002.05.31
+ Functional release 1.2.5
+
+Installation
+-----------------
+1) Unpack the distribution file in the 'plug-ins' directory of your eclipse installation.
+2) Launch eclipse
+
+Usage
+-----------
+Activate View
+ 1) From eclipse menu select:
+ Window -> Show View -> Other
+ This will bring up the View Selection Dialog
+ 2) From View Selection Dialog select:
+ External Tools -> AntView
+
+Run Ant Target(s)
+ o The AntView is a tree, with the top level being the project/directory of the Ant Build file
+ and the sub-items being the Targets.
+ o A target can be selected (double-click), the order the targets are run is
+ displayed next to the target when selected. To deselect a target, double-click again.
+ o To run all selected targets, select the 'running man' icon on the view tool bar or the
+ right click menu in the view.
+ o To clear all selections (reset), select the 'eraser' icon on the view tool bar or the
+ right click menu in the view.
+ o To Refresh/Reload Ant Build files, select the 'circular arrows' icon on the view tool bar
+ or the right click menu in the view.
+ o To change the display level output of the Ant build process, select the 'down triangle'
+ then the 'Display level' menu option or use the right click menu in the view.
+ o Open target item to see additional information on target dependiencies and execution order.
+
+
diff --git a/org.eclipse.ui.externaltools/build.properties b/org.eclipse.ui.externaltools/build.properties
index debb1b86d..b6c564830 100644
--- a/org.eclipse.ui.externaltools/build.properties
+++ b/org.eclipse.ui.externaltools/build.properties
@@ -1,6 +1,7 @@
source.externaltools.jar = External Tools Base/,\
Program Tools Support/,\
- Ant Tools Support/
+ Ant Tools Support/,\
+ Ant View/
source.lib/antrunner.jar = Ant Runner Support/
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/ant_project.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_project.gif
new file mode 100644
index 000000000..8a3593fbe
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_project.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/ant_project_err.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_project_err.gif
new file mode 100644
index 000000000..a0fb73d10
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_project_err.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/ant_run.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_run.gif
new file mode 100644
index 000000000..2a4d8aa91
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_run.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_arrow.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_arrow.gif
new file mode 100644
index 000000000..bca8311d1
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_arrow.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_check.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_check.gif
new file mode 100644
index 000000000..985fa3bf3
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_check.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/clear_co.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/clear_co.gif
new file mode 100644
index 000000000..255832653
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/clear_co.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/element.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/element.gif
new file mode 100644
index 000000000..06d007905
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/element.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/elements.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/elements.gif
new file mode 100644
index 000000000..76b351e04
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/elements.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/error.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/error.gif
new file mode 100644
index 000000000..c2bfdd606
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/error.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/properties.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/properties.gif
new file mode 100644
index 000000000..ec0cba1aa
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/properties.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/refresh_nav.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/refresh_nav.gif
new file mode 100644
index 000000000..a063c230a
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/clcl16/refresh_nav.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/icons/full/cview16/ant_view.gif b/org.eclipse.ui.externaltools/icons/full/cview16/ant_view.gif
new file mode 100644
index 000000000..76be4369d
--- /dev/null
+++ b/org.eclipse.ui.externaltools/icons/full/cview16/ant_view.gif
Binary files differ
diff --git a/org.eclipse.ui.externaltools/lib/antrunner.jar b/org.eclipse.ui.externaltools/lib/antrunner.jar
new file mode 100644
index 000000000..5902ffdea
--- /dev/null
+++ b/org.eclipse.ui.externaltools/lib/antrunner.jar
Binary files differ
diff --git a/org.eclipse.ui.externaltools/plugin.properties b/org.eclipse.ui.externaltools/plugin.properties
index 1258fdfcd..586e5bc11 100644
--- a/org.eclipse.ui.externaltools/plugin.properties
+++ b/org.eclipse.ui.externaltools/plugin.properties
@@ -27,6 +27,7 @@ NewWizard.antBuildDescription = Create an external tool to run Ant build file.
Builder.externalTools = Integrated External Tool Builder
View.externalToolView = External Tools
View.logConsole = Log Console
+View.antView = Ant View
PreferencePage.antPreferences = Ant
PreferencePage.toolsPreferences = External Tools
PopupMenu.runAnt = Run &Ant...
diff --git a/org.eclipse.ui.externaltools/plugin.xml b/org.eclipse.ui.externaltools/plugin.xml
index d04cf3c7a..801127ec6 100644
--- a/org.eclipse.ui.externaltools/plugin.xml
+++ b/org.eclipse.ui.externaltools/plugin.xml
@@ -12,6 +12,7 @@
</library>
</runtime>
<requires>
+ <import plugin="org.apache.ant"/>
<import plugin="org.apache.xerces"/>
<import plugin="org.eclipse.ant.core"/>
<import plugin="org.eclipse.core.resources"/>
@@ -289,6 +290,13 @@
category="org.eclipse.ui.externaltools.views"
class="org.eclipse.ui.externaltools.internal.ui.LogConsoleView">
</view>
+ <view
+ id="org.eclipse.ui.externaltools.AntView"
+ name="%View.antView"
+ icon="icons/full/cview16/ant_view.gif"
+ category="org.eclipse.ui.externaltools.views"
+ class="org.eclipse.ui.externaltools.internal.ant.antview.views.AntView">
+ </view>
</extension>
<extension point="org.eclipse.ui.preferencePages">
@@ -298,6 +306,12 @@
class="org.eclipse.ui.externaltools.internal.ant.dialog.AntPreferencePage"
category="org.eclipse.ui.externaltools.ToolsPreferencePage">
</page>
+ <page
+ id="org.eclipse.ui.externaltools.AntViewPreferencePage"
+ name="%View.antView"
+ class="org.eclipse.ui.externaltools.internal.ant.antview.preferences.PreferencePage"
+ category="org.eclipse.ui.externaltools.ToolsPreferencePage">
+ </page>
</extension>
<extension point="org.eclipse.core.resources.builders"
@@ -323,7 +337,7 @@
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="org.eclipse.ui.externaltools.RunAnt"
- objectClass="org.eclipse.core.resources.IResource"
+ objectClass="org.eclipse.core.resources.IFile"
adaptable="true"
nameFilter="*.xml">
<action
diff --git a/org.eclipse.ui.externaltools/scripts/buildExtraJAR.xml b/org.eclipse.ui.externaltools/scripts/buildExtraJAR.xml
index 28d11a8f0..accd6d2d1 100644
--- a/org.eclipse.ui.externaltools/scripts/buildExtraJAR.xml
+++ b/org.eclipse.ui.externaltools/scripts/buildExtraJAR.xml
@@ -33,7 +33,7 @@
<delete dir="${temp.folder}/lib/antrunner.jar.bin"/>
<mkdir dir="${temp.folder}/lib/antrunner.jar.bin"/>
<!-- compile the source code -->
- <javac destdir="${temp.folder}/lib/antrunner.jar.bin" failonerror="false" verbose="false" debug="on" includeAntRuntime="no" bootclasspath="${bootclasspath}" classpath="${basedir}/../org.eclipse.core.runtime/runtime.jar;${basedir}/../org.apache.ant/ant.jar;${basedir}/../org.apache.xerces/xercesImpl.jar;${basedir}/../org.apache.xerces/xmlParserAPIs.jar;${basedir}/bin;${basedir}/../org.eclipse.core.boot/boot.jar;${swt.jar};${basedir}/../org.eclipse.ant.core/bin">
+ <javac destdir="${temp.folder}/lib/antrunner.jar.bin" failonerror="false" verbose="false" debug="on" includeAntRuntime="no" bootclasspath="${bootclasspath}" classpath="${basedir}/../org.eclipse.core.runtime/runtime.jar;${basedir}/../org.apache.ant/ant.jar;${basedir}/../org.apache.xerces/xercesImpl.jar;${basedir}/../org.apache.xerces/xmlParserAPIs.jar;${basedir}/bin;${basedir}/../org.eclipse.core.boot/boot.jar;${swt.jar};${basedir}/../org.eclipse.jface/jface.jar;${basedir}/../org.eclipse.ui.workbench/workbench.jar;${basedir}/../org.eclipse.ant.core/bin">
<src path="Ant Runner Support/"/>
</javac>
<!-- copy necessary resources -->
diff --git a/org.eclipse.ui.externaltools/scripts/exportplugin.xml b/org.eclipse.ui.externaltools/scripts/exportplugin.xml
index d8b5fc596..65615e0c3 100644
--- a/org.eclipse.ui.externaltools/scripts/exportplugin.xml
+++ b/org.eclipse.ui.externaltools/scripts/exportplugin.xml
@@ -25,6 +25,7 @@
<zip zipfile="${dest}/externaltoolssrc.zip">
<fileset dir="Ant Runner Support"/>
<fileset dir="Ant Tools Support"/>
+ <fileset dir="Ant View"/>
<fileset dir="External Tools Base"/>
<fileset dir="Program Tools Support"/>
</zip>
diff --git a/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/.project b/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/.project
new file mode 100644
index 000000000..14e70879c
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>AntView ExtDir Test</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/build.xml b/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/build.xml
new file mode 100644
index 000000000..58b67c8d9
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/build.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="External Dir Test" basedir="." default="test-one">
+ <target name="init">
+ <echo message="Init"/>
+ </target>
+ <target name="test-one" depends="init,test-two">
+ <echo message="One - multiple dependents"/>
+ </target>
+ <target name="test-two" depends="init,test-three">
+ <echo message="Two - similar dependencies"/>
+ </target>
+ <target name="test-three">
+ <echo message="Three - simple"/>
+ </target>
+</project> \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/readme.txt b/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/readme.txt
new file mode 100644
index 000000000..b88a89ef7
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Ext Dir Test Example/readme.txt
@@ -0,0 +1,4 @@
+
+Create a new simple project with project directory outside ECLIPSE_HOME
+
+import this directory. \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Java Test/.classpath b/org.eclipse.ui.externaltools/test/AntView Java Test/.classpath
new file mode 100644
index 000000000..76a5ffb16
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Java Test/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path=""/>
+ <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
+ <classpathentry kind="output" path=""/>
+</classpath>
diff --git a/org.eclipse.ui.externaltools/test/AntView Java Test/.project b/org.eclipse.ui.externaltools/test/AntView Java Test/.project
new file mode 100644
index 000000000..0cfc3b84d
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Java Test/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>AntView Java Test</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.ui.externaltools/test/AntView Java Test/bin.log b/org.eclipse.ui.externaltools/test/AntView Java Test/bin.log
new file mode 100644
index 000000000..e3b4fe51a
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Java Test/bin.log
@@ -0,0 +1,2 @@
+Compiled 13 lines in 991 ms (13.1 lines/s)
+1 .class file generated \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Java Test/bin/main.class b/org.eclipse.ui.externaltools/test/AntView Java Test/bin/main.class
new file mode 100644
index 000000000..820d96c4e
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Java Test/bin/main.class
Binary files differ
diff --git a/org.eclipse.ui.externaltools/test/AntView Java Test/build.xml b/org.eclipse.ui.externaltools/test/AntView Java Test/build.xml
new file mode 100644
index 000000000..a766f9d24
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Java Test/build.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="Java Compile Test" basedir="." default="compile">
+ <target name="properties" if="eclipse.running">
+ <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+ </target>
+ <target name="compile" depends="properties,env">
+ <javac destdir="bin" failonerror="false" verbose="true" debug="on" includeAntRuntime="no">
+ <src path="src/"/>
+ </javac>
+ </target>
+
+ <target name="clean">
+ <delete file="bin/main.class"/>
+ </target>
+
+ <target name="env">
+ <echo>
+ System Properties
+ -----------------
+ java.version: ${java.version}
+ java.vendor: ${java.vendor}
+ java.home: ${java.home}
+ java.class.path: ${java.class.path}
+ java.ext.dirs: ${java.ext.dirs}
+ os.name: ${os.name}
+ os.arch: ${os.arch}
+ os.version: ${os.version}
+ user.name: ${user.name}
+
+ Ant Environment
+ ----------------
+ basedir: ${basedir}
+ ant.file: ${ant.file}
+ ant.version: ${ant.version}
+ ant.project.name: ${ant.project.name}
+ ant.java.version: ${ant.java.version}
+ build.compiler: ${build.compiler}
+ </echo>
+ </target>
+</project> \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Java Test/src/main.class b/org.eclipse.ui.externaltools/test/AntView Java Test/src/main.class
new file mode 100644
index 000000000..7ccc9b41f
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Java Test/src/main.class
Binary files differ
diff --git a/org.eclipse.ui.externaltools/test/AntView Java Test/src/main.java b/org.eclipse.ui.externaltools/test/AntView Java Test/src/main.java
new file mode 100644
index 000000000..09b936444
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Java Test/src/main.java
@@ -0,0 +1,13 @@
+/**
+ * @author roscoe.m.rush
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+public class main {
+ public main() {
+ System.out.println("Hello World!\n");
+ }
+}
diff --git a/org.eclipse.ui.externaltools/test/AntView Test/.project b/org.eclipse.ui.externaltools/test/AntView Test/.project
new file mode 100644
index 000000000..0e232b67a
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Test/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>AntView Test</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.ui.externaltools/test/AntView Test/Buildfile Error/build.xml b/org.eclipse.ui.externaltools/test/AntView Test/Buildfile Error/build.xml
new file mode 100644
index 000000000..3428c80d7
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Test/Buildfile Error/build.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="AntView Test.01" basedir="." default="test-one">
+ <target name="init">
+ <echo message="Init"/>
+ </target>
+ <target name="test-one" depends="init,test-two">
+ <echo message="One - multiple dependents"/>
+ </target>
+ <target name="test-two" depends="init,test-three" description="description of test-two">
+ <echo message="Two - similar dependencies"/>
+ </target>
+ <target name="test-three" description="description of test-three">
+ <echo message="Three - simple"/>
+ </target>
+ <target name="env"
+ <echo>
+ Shell Environment
+ -----------------
+ ANT_HOME: ${e.ANT_HOME}
+ JAVA_HOME: ${e.JAVA_HOME}
+ CLASSPATH: ${e.CLASSPATH}
+
+ System Properties
+ -----------------
+ java.version: ${java.version}
+ java.vendor: ${java.vendor}
+ java.home: ${java.home}
+ java.class.path: ${java.class.path}
+ java.ext.dirs: ${java.ext.dirs}
+ os.name: ${os.name}
+ os.arch: ${os.arch}
+ os.version: ${os.version}
+ user.name: ${user.name}
+
+ Ant Environment
+ ----------------
+ basedir: ${basedir}
+ ant.file: ${ant.file}
+ ant.version: ${ant.version}
+ ant.project.name: ${ant.project.name}
+ ant.java.version: ${ant.java.version}
+ </echo>
+ </target>
+</project> \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Test/Custom Build filename/customBuild.xml b/org.eclipse.ui.externaltools/test/AntView Test/Custom Build filename/customBuild.xml
new file mode 100644
index 000000000..fb98e767b
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Test/Custom Build filename/customBuild.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="Custom build filename" basedir="." default="test-one">
+ <target name="init">
+ <echo message="Init"/>
+ </target>
+ <target name="test-one" depends="init,test-two">
+ <echo message="One - multiple dependents"/>
+ </target>
+ <target name="test-two" depends="init,test-three" description="description of test-two">
+ <echo message="Two - similar dependencies"/>
+ </target>
+ <target name="test-three" description="description of test-three">
+ <echo message="Three - simple"/>
+ </target>
+ <target name="env">
+ <echo>
+ System Properties
+ -----------------
+ java.version: ${java.version}
+ java.vendor: ${java.vendor}
+ java.home: ${java.home}
+ java.class.path: ${java.class.path}
+ java.ext.dirs: ${java.ext.dirs}
+ os.name: ${os.name}
+ os.arch: ${os.arch}
+ os.version: ${os.version}
+ user.name: ${user.name}
+
+ Ant Environment
+ ----------------
+ basedir: ${basedir}
+ ant.file: ${ant.file}
+ ant.version: ${ant.version}
+ ant.project.name: ${ant.project.name}
+ ant.java.version: ${ant.java.version}
+ build.compiler: ${build.compiler}
+ </echo>
+ </target>
+</project> \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Test/Missing default target/build.xml b/org.eclipse.ui.externaltools/test/AntView Test/Missing default target/build.xml
new file mode 100644
index 000000000..c2625fbe1
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Test/Missing default target/build.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="Missing Project default test" basedir=".">
+ <target name="env">
+ <echo>
+ System Properties
+ -----------------
+ java.version: ${java.version}
+ java.vendor: ${java.vendor}
+ java.home: ${java.home}
+ java.class.path: ${java.class.path}
+ java.ext.dirs: ${java.ext.dirs}
+ os.name: ${os.name}
+ os.arch: ${os.arch}
+ os.version: ${os.version}
+ user.name: ${user.name}
+
+ Ant Environment
+ ----------------
+ basedir: ${basedir}
+ ant.file: ${ant.file}
+ ant.version: ${ant.version}
+ ant.project.name: ${ant.project.name}
+ ant.java.version: ${ant.java.version}
+ build.compiler: ${build.compiler}
+ </echo>
+ </target>
+</project> \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Test/Missing project element/build.xml b/org.eclipse.ui.externaltools/test/AntView Test/Missing project element/build.xml
new file mode 100644
index 000000000..6d253af08
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Test/Missing project element/build.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<missingproject name="Missing project element" basedir="." default="env">
+ <target name="env">
+ <echo>
+ System Properties
+ -----------------
+ java.version: ${java.version}
+ java.vendor: ${java.vendor}
+ java.home: ${java.home}
+ java.class.path: ${java.class.path}
+ java.ext.dirs: ${java.ext.dirs}
+ os.name: ${os.name}
+ os.arch: ${os.arch}
+ os.version: ${os.version}
+ user.name: ${user.name}
+
+ Ant Environment
+ ----------------
+ basedir: ${basedir}
+ ant.file: ${ant.file}
+ ant.version: ${ant.version}
+ ant.project.name: ${ant.project.name}
+ ant.java.version: ${ant.java.version}
+ build.compiler: ${build.compiler}
+ </echo>
+ </target>
+</missingproject> \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Test/Missing project name/build.xml b/org.eclipse.ui.externaltools/test/AntView Test/Missing project name/build.xml
new file mode 100644
index 000000000..60cc3242d
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Test/Missing project name/build.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project basedir="." default="env">
+ <target name="env">
+ <echo>
+ System Properties
+ -----------------
+ java.version: ${java.version}
+ java.vendor: ${java.vendor}
+ java.home: ${java.home}
+ java.class.path: ${java.class.path}
+ java.ext.dirs: ${java.ext.dirs}
+ os.name: ${os.name}
+ os.arch: ${os.arch}
+ os.version: ${os.version}
+ user.name: ${user.name}
+
+ Ant Environment
+ ----------------
+ basedir: ${basedir}
+ ant.file: ${ant.file}
+ ant.version: ${ant.version}
+ ant.project.name: ${ant.project.name}
+ ant.java.version: ${ant.java.version}
+ build.compiler: ${build.compiler}
+ </echo>
+ </target>
+</project> \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Test/Similar Dependencies/build.xml b/org.eclipse.ui.externaltools/test/AntView Test/Similar Dependencies/build.xml
new file mode 100644
index 000000000..d8f48ded0
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Test/Similar Dependencies/build.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="Similiar dependencies" basedir="." default="test-one">
+ <target name="init">
+ <echo message="Init"/>
+ </target>
+ <target name="test-one" depends="init,test-two">
+ <echo message="One - multiple dependents"/>
+ </target>
+ <target name="test-two" depends="init,test-three" description="description of test-two">
+ <echo message="Two - similar dependencies"/>
+ </target>
+ <target name="test-three" description="description of test-three">
+ <echo message="Three - simple"/>
+ </target>
+</project> \ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/test/AntView Test/Simple Dependency/build.xml b/org.eclipse.ui.externaltools/test/AntView Test/Simple Dependency/build.xml
new file mode 100644
index 000000000..827110d01
--- /dev/null
+++ b/org.eclipse.ui.externaltools/test/AntView Test/Simple Dependency/build.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="Simple" basedir="." default="test-a">
+ <target name="test-a">
+ <echo message="A - no dependents"/>
+ </target>
+ <target name="test-b" depends="test-a">
+ <echo message="B - simple dependency"/>
+ </target>
+</project> \ No newline at end of file

Back to the top