diff options
author | Jared Burns | 2002-10-31 19:36:02 +0000 |
---|---|---|
committer | Jared Burns | 2002-10-31 19:36:02 +0000 |
commit | bda16a34a9115a2c50d2d1d6a13420b565b14a1a (patch) | |
tree | e8e2c39b46918c01ae8dc27224dc00294aaf4a9a | |
parent | 22ecb4a238a5b753861f6daa056c32a4ea4837b0 (diff) | |
download | eclipse.platform.debug-bda16a34a9115a2c50d2d1d6a13420b565b14a1a.tar.gz eclipse.platform.debug-bda16a34a9115a2c50d2d1d6a13420b565b14a1a.tar.xz eclipse.platform.debug-bda16a34a9115a2c50d2d1d6a13420b565b14a1a.zip |
Released the Ant View
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 Binary files differnew file mode 100644 index 000000000..8a3593fbe --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_project.gif 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 Binary files differnew file mode 100644 index 000000000..a0fb73d10 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_project_err.gif diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/ant_run.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_run.gif Binary files differnew file mode 100644 index 000000000..2a4d8aa91 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_run.gif 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 Binary files differnew file mode 100644 index 000000000..bca8311d1 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_arrow.gif 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 Binary files differnew file mode 100644 index 000000000..985fa3bf3 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/ant_tsk_check.gif diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/clear_co.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/clear_co.gif Binary files differnew file mode 100644 index 000000000..255832653 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/clear_co.gif diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/element.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/element.gif Binary files differnew file mode 100644 index 000000000..06d007905 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/element.gif diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/elements.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/elements.gif Binary files differnew file mode 100644 index 000000000..76b351e04 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/elements.gif diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/error.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/error.gif Binary files differnew file mode 100644 index 000000000..c2bfdd606 --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/error.gif diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/properties.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/properties.gif Binary files differnew file mode 100644 index 000000000..ec0cba1aa --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/properties.gif diff --git a/org.eclipse.ui.externaltools/icons/full/clcl16/refresh_nav.gif b/org.eclipse.ui.externaltools/icons/full/clcl16/refresh_nav.gif Binary files differnew file mode 100644 index 000000000..a063c230a --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/clcl16/refresh_nav.gif diff --git a/org.eclipse.ui.externaltools/icons/full/cview16/ant_view.gif b/org.eclipse.ui.externaltools/icons/full/cview16/ant_view.gif Binary files differnew file mode 100644 index 000000000..76be4369d --- /dev/null +++ b/org.eclipse.ui.externaltools/icons/full/cview16/ant_view.gif diff --git a/org.eclipse.ui.externaltools/lib/antrunner.jar b/org.eclipse.ui.externaltools/lib/antrunner.jar Binary files differnew file mode 100644 index 000000000..5902ffdea --- /dev/null +++ b/org.eclipse.ui.externaltools/lib/antrunner.jar 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 Binary files differnew file mode 100644 index 000000000..820d96c4e --- /dev/null +++ b/org.eclipse.ui.externaltools/test/AntView Java Test/bin/main.class 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 Binary files differnew file mode 100644 index 000000000..7ccc9b41f --- /dev/null +++ b/org.eclipse.ui.externaltools/test/AntView Java Test/src/main.class 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 |