diff options
author | sarsenau | 2002-05-14 17:55:40 +0000 |
---|---|---|
committer | sarsenau | 2002-05-14 17:55:40 +0000 |
commit | 894a6570ac5fff18fc616d5764d725e9feb07416 (patch) | |
tree | 43e11097da6882b7bdbbe2cc1e5c1da411f66a68 /org.eclipse.ui.externaltools | |
parent | e0cbd99e2dbc6c6c52f1fd549f9a03e3528fb000 (diff) | |
download | eclipse.platform.debug-894a6570ac5fff18fc616d5764d725e9feb07416.tar.gz eclipse.platform.debug-894a6570ac5fff18fc616d5764d725e9feb07416.tar.xz eclipse.platform.debug-894a6570ac5fff18fc616d5764d725e9feb07416.zip |
Parse Ant XML directly instead of ProjectHelper class
Diffstat (limited to 'org.eclipse.ui.externaltools')
10 files changed, 235 insertions, 119 deletions
diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntTargetList.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntTargetList.java new file mode 100644 index 000000000..5889ae5c2 --- /dev/null +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntTargetList.java @@ -0,0 +1,56 @@ +package org.eclipse.ui.externaltools.internal.core; + +/********************************************************************** +Copyright (c) 2002 IBM Corp. and others. +All rights reserved. This program and the accompanying materials +are made available under the terms of the Common Public License v0.5 +which accompanies this distribution, and is available at +http://www.eclipse.org/legal/cpl-v05.html + +Contributors: +**********************************************************************/ +import java.util.ArrayList; + +/** + * This class represents a list of targets that an + * Ant file can run. + */ +public class AntTargetList { + // The list of targets. + private ArrayList targets = new ArrayList(); + + // The target that will be run if no targets are specified + // by the user. + private String defaultTarget = null; + + /** + * Add a target to the list. + */ + public void add(String target) { + targets.add(target); + } + + /** + * Retrieve the default target. This method will return null + * if the default target has not yet been specified. + */ + public String getDefaultTarget() { + return defaultTarget; + } + + /** + * Retrieve all the targets as an array. + */ + public String[] getTargets() { + String[] array = new String[targets.size()]; + targets.toArray(array); + return array; + } + + /** + * Set the default target. + */ + public void setDefaultTarget(String target) { + defaultTarget = target; + } +} diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntUtil.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntUtil.java index accaba201..3a2cd9a2f 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntUtil.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/AntUtil.java @@ -9,17 +9,18 @@ http://www.eclipse.org/legal/cpl-v05.html Contributors: **********************************************************************/ -import java.io.File; +import java.io.*; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.ProjectHelper; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.*; +import org.eclipse.ui.*; /** * General utility class dealing with Ant files */ public final class AntUtil { + private static final String ATT_DEFAULT = "default"; //NON-NLS-1$ + private static final String ATT_NAME = "name"; //NON-NLS-1$ + private static final String TAG_TARGET = "target"; //NON-NLS-1$ // Holds the current monitor that the Ant build logger can access private static IProgressMonitor monitor; @@ -31,25 +32,55 @@ public final class AntUtil { } /** - * Creates an intialized Ant project for the given - * Ant file. Returns <code>null</code> if file - * is invalid Ant format. - */ - public static Project createAntProject(IPath path) { - // create an ant project and initialize it - Project antProject = new Project(); - antProject.init(); - antProject.setProperty("ant.file", path.toOSString()); //$NON-NLS-1$; - + * Returns the list of targets for the Ant file specified + * by the provided IPath, or <code>null</code> if no file is + * found or the file is not a valid Ant file. + */ + public static AntTargetList getTargetList(IPath path) { + IMemento memento = getMemento(path); + return getTargetList(memento); + } + + /** + * Returns an IMemento representing the Ant tool found in + * the supplied IPath, or <code>null</code> if a file is not found. + */ + private static IMemento getMemento(IPath path) { try { - ProjectHelper.configureProject(antProject, new File(path.toOSString())); - } catch (VirtualMachineError e) { - throw e; // Let others handle this - } catch (Throwable t) { - return null; // Assume invalid format problems + Reader reader = new FileReader(path.toFile()); + return XMLMemento.createReadRoot(reader); + } catch (FileNotFoundException e) { + ExternalToolsPlugin.getDefault().log("Error: Ant file not found.", e); // $NON-NLS-1$ + return null; + } + } + + /** + * Returns the list of targets of the Ant file represented by the + * supplied IMemento, or <code>null</code> if the memento is null or + * does not represent a valid Ant file. + */ + private static AntTargetList getTargetList(IMemento memento) { + if (memento == null) + return null; + AntTargetList targets = new AntTargetList(); + + String defaultTarget = memento.getString(ATT_DEFAULT); + targets.setDefaultTarget(defaultTarget); + + IMemento[] targetMementos = memento.getChildren(TAG_TARGET); + for (int i=0; i < targetMementos.length; i++) { + IMemento targetMemento = targetMementos[i]; + String target = targetMemento.getString(ATT_NAME); + targets.add(target); } - return antProject; + // If the file has no targets, then it is not a + // valid Ant file. + if (targets.getTargets().length == 0) + return null; + else + return targets; } /** diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/ProgramRunner.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/ProgramRunner.java index 9b1317a9a..97ab525d4 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/ProgramRunner.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/core/ProgramRunner.java @@ -12,10 +12,6 @@ Contributors: import java.io.IOException; import java.io.InputStream; -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -62,7 +58,7 @@ public class ProgramRunner extends ExternalToolsRunner { * Returns a runnable that is used to capture and print out a stream * from another process. */ - private Runnable getRunnable(final InputStream input, final BuildListener listener, final int severity, final boolean[] finished) { +/* private Runnable getRunnable(final InputStream input, final BuildListener listener, final int severity, final boolean[] finished) { return new Runnable() { public void run() { try { @@ -89,4 +85,5 @@ public class ProgramRunner extends ExternalToolsRunner { } }; } +*/ } diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntAction.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntAction.java index 350ee8c61..09619ad72 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntAction.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntAction.java @@ -9,25 +9,13 @@ http://www.eclipse.org/legal/cpl-v05.html Contributors: **********************************************************************/ -import java.io.File; - -import org.apache.tools.ant.Project; -import org.apache.tools.ant.ProjectHelper; import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.Action; -import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.externaltools.internal.core.AntUtil; -import org.eclipse.ui.externaltools.internal.core.ExternalToolsPlugin; -import org.eclipse.ui.externaltools.internal.core.IPreferenceConstants; -import org.eclipse.ui.externaltools.internal.core.ToolMessages; +import org.eclipse.ui.externaltools.internal.core.*; /** * Action to run an ant build file. @@ -59,8 +47,8 @@ public class AntAction extends Action { saveDirtyEditors(); - Project project = AntUtil.createAntProject(file.getLocation()); - if (project == null) { + AntTargetList targetList = AntUtil.getTargetList(file.getLocation()); + if (targetList == null) { MessageDialog.openError( window.getShell(), ToolMessages.getString("AntAction.runErrorTitle"), //$NON-NLS-1$; @@ -68,7 +56,7 @@ public class AntAction extends Action { return; } - AntLaunchWizard wizard = new AntLaunchWizard(project, file, window); + AntLaunchWizard wizard = new AntLaunchWizard(targetList, file, window); wizard.setNeedsProgressMonitor(true); WizardDialog dialog = new WizardDialog(window.getShell(), wizard); dialog.create(); diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntLaunchWizard.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntLaunchWizard.java index 22f89859d..47f3bdacb 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntLaunchWizard.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntLaunchWizard.java @@ -12,20 +12,13 @@ Contributors: import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; -import org.apache.tools.ant.Project; import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.*; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.externaltools.internal.core.DefaultRunnerContext; -import org.eclipse.ui.externaltools.internal.core.ExternalTool; -import org.eclipse.ui.externaltools.internal.core.ExternalToolsPlugin; -import org.eclipse.ui.externaltools.internal.core.ToolMessages; -import org.eclipse.ui.externaltools.internal.core.ToolUtil; +import org.eclipse.ui.externaltools.internal.core.*; /** * The wizard to run an Ant script file when the Run Ant... @@ -43,7 +36,7 @@ public class AntLaunchWizard extends Wizard { /** * The Ant project described in the xml file. */ - private Project antProject = null; + private AntTargetList targetList = null; /** * The tool script representing Ant script @@ -73,9 +66,9 @@ public class AntLaunchWizard extends Wizard { * @param antProject * @param antFile */ - public AntLaunchWizard(Project antProject, IFile antFile, IWorkbenchWindow window) { + public AntLaunchWizard(AntTargetList targetList, IFile antFile, IWorkbenchWindow window) { super(); - this.antProject = antProject; + this.targetList = targetList; this.antFile = antFile; this.window = window; String name = antFile.getFullPath().toString(); @@ -94,7 +87,7 @@ public class AntLaunchWizard extends Wizard { * Method declared on IWizard. */ public void addPages() { - page1 = new AntLaunchWizardPage(antProject); + page1 = new AntLaunchWizardPage(targetList); addPage(page1); String args = antTool.getArguments(); diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntLaunchWizardPage.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntLaunchWizardPage.java index dfa6fc327..89b8d63a0 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntLaunchWizardPage.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntLaunchWizardPage.java @@ -9,31 +9,17 @@ http://www.eclipse.org/legal/cpl-v05.html Contributors: **********************************************************************/ -import java.net.MalformedURLException; -import java.net.URL; +import java.net.*; import java.util.ArrayList; -import java.util.Iterator; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Target; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.CheckStateChangedEvent; -import org.eclipse.jface.viewers.CheckboxTableViewer; -import org.eclipse.jface.viewers.ICheckStateListener; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerSorter; +import org.eclipse.jface.viewers.*; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.externaltools.internal.core.ExternalToolsPlugin; -import org.eclipse.ui.externaltools.internal.core.ToolMessages; +import org.eclipse.swt.events.*; +import org.eclipse.swt.layout.*; +import org.eclipse.swt.widgets.*; +import org.eclipse.ui.externaltools.internal.core.*; /** * First page of the run Ant wizard. Allows the user to pick @@ -44,7 +30,7 @@ public class AntLaunchWizardPage extends WizardPage { private static final int SIZING_SELECTION_WIDGET_HEIGHT = 200; private static final int SIZING_SELECTION_WIDGET_WIDTH = 200; - private Project project; + private AntTargetList targetList; private String initialTargets[]; private String initialArguments; private boolean initialDisplayLog = true; @@ -55,9 +41,9 @@ public class AntLaunchWizardPage extends WizardPage { private Button showLog; private Text argumentsField; - public AntLaunchWizardPage(Project project) { + public AntLaunchWizardPage(AntTargetList targetList) { super("AntScriptPage"); //$NON-NLS-1$; - this.project = project; + this.targetList = targetList; setTitle(ToolMessages.getString("AntLaunchWizard.dialogTitle")); //$NON-NLS-1$; setDescription(ToolMessages.getString("AntLaunchWizard.dialogDescription")); //$NON-NLS-1$; setImageDescriptor(getImageDescriptor("icons/full/wizban/ant_wiz.gif")); //$NON-NLS-1$; @@ -95,14 +81,14 @@ public class AntLaunchWizardPage extends WizardPage { listViewer.getTable().setLayoutData(data); listViewer.setSorter(new ViewerSorter() { public int compare(Viewer viewer, Object o1, Object o2) { - return ((Target) o1).getName().compareTo(((Target) o2).getName()); + return ((String)o1).compareTo((String) o2); } }); - if (project.getDefaultTarget() != null) - labelProvider.setDefaultTargetName(project.getDefaultTarget()); + if (targetList.getDefaultTarget() != null) + labelProvider.setDefaultTargetName(targetList.getDefaultTarget()); listViewer.setLabelProvider(labelProvider); listViewer.setContentProvider(new AntTargetContentProvider()); - listViewer.setInput(project); + listViewer.setInput(targetList); // The arguments field label = new Label(composite, SWT.NONE); @@ -150,9 +136,7 @@ public class AntLaunchWizardPage extends WizardPage { */ public String[] getSelectedTargets() { String[] names = new String[selectedTargets.size()]; - for (int i = 0; i < selectedTargets.size(); i++) { - names[i] = ((Target)selectedTargets.get(i)).getName(); - } + selectedTargets.toArray(names); return names; } @@ -169,15 +153,19 @@ public class AntLaunchWizardPage extends WizardPage { */ private void selectInitialTargets() { if (initialTargets != null && initialTargets.length > 0) { + String[] targets = targetList.getTargets(); for (int i = 0; i < initialTargets.length; i++) { - Target target = (Target)project.getTargets().get(initialTargets[i]); - if (target != null && !selectedTargets.contains(target)) { - listViewer.setChecked(target, true); - selectedTargets.add(target); + for (int j = 0; j < targets.length; j++) { + if (targets[j].equals(initialTargets[i])) { + String target = targets[j]; + listViewer.setChecked(target, true); + selectedTargets.add(target); + break; + } } } } else { - Target target = (Target)project.getTargets().get(project.getDefaultTarget()); + String target = targetList.getDefaultTarget(); if (target != null) { listViewer.setChecked(target, true); selectedTargets.add(target); @@ -224,7 +212,7 @@ public class AntLaunchWizardPage extends WizardPage { */ private class TargetCheckListener implements ICheckStateListener { public void checkStateChanged(CheckStateChangedEvent e) { - Target checkedTarget = (Target) e.getElement(); + String checkedTarget = (String) e.getElement(); if (e.getChecked()) selectedTargets.add(checkedTarget); else diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntTargetContentProvider.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntTargetContentProvider.java index 20e166048..9e9f72f4c 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntTargetContentProvider.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntTargetContentProvider.java @@ -9,9 +9,8 @@ http://www.eclipse.org/legal/cpl-v05.html Contributors: **********************************************************************/ -import org.apache.tools.ant.Project; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.*; +import org.eclipse.ui.externaltools.internal.core.AntTargetList; /** * Content provider for targets within an Ant script @@ -27,9 +26,9 @@ public class AntTargetContentProvider implements IStructuredContentProvider { /* (non-Javadoc) * Method declared on IStructuredContentProvider. */ - public Object[] getElements(Object inputElement) { - Project project = (Project) inputElement; - return project.getTargets().values().toArray(); + public Object[] getElements(Object input) { + AntTargetList targetList = (AntTargetList) input; + return targetList.getTargets(); } /* (non-Javadoc) diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntTargetLabelProvider.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntTargetLabelProvider.java index ae5c37448..29ce328e3 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntTargetLabelProvider.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/AntTargetLabelProvider.java @@ -11,7 +11,6 @@ Contributors: **********************************************************************/ import java.util.ArrayList; -import org.apache.tools.ant.Target; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.ui.externaltools.internal.core.ToolMessages; @@ -26,10 +25,10 @@ public class AntTargetLabelProvider extends LabelProvider { * Method declared on ILabelProvider. */ public String getText(Object model) { - Target targetToDisplay = (Target) model; + String targetToDisplay = (String) model; if (targetToDisplay != null) { - StringBuffer result = new StringBuffer(targetToDisplay.getName()); - if (targetToDisplay.getName().equals(defaultTargetName)) { + StringBuffer result = new StringBuffer(targetToDisplay); + if (targetToDisplay.equals(defaultTargetName)) { result.append(" ("); //$NON-NLS-1$; result.append(ToolMessages.getString("AntTargetLabelProvider.defaultTarget")); //$NON-NLS-1$; result.append(")"); //$NON-NLS-1$; diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/EditDialog.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/EditDialog.java index 14e7bcb35..03ba767b8 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/EditDialog.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/EditDialog.java @@ -10,9 +10,8 @@ http://www.eclipse.org/legal/cpl-v05.html Contributors: **********************************************************************/ import java.io.File; -import java.util.*; +import java.util.ArrayList; -import org.apache.tools.ant.*; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import org.eclipse.jface.dialogs.*; @@ -22,12 +21,11 @@ import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; -import org.eclipse.ui.externaltools.internal.core.*; import org.eclipse.ui.*; import org.eclipse.ui.dialogs.*; +import org.eclipse.ui.externaltools.internal.core.*; import org.eclipse.ui.help.WorkbenchHelp; import org.eclipse.ui.model.*; -import org.eclipse.swt.widgets.List; /** * Dialog box to enter the required information for running @@ -638,8 +636,8 @@ public class EditDialog extends TitleAreaDialog { list.add(ToolMessages.getString("EditDialog.varProjectXDirLabel")); //$NON-NLS-1$ Path path = new Path(locationField.getText().trim()); - Project project = AntUtil.createAntProject(path); - if (project != null) + AntTargetList targetList = AntUtil.getTargetList(path); + if (targetList != null) list.add(ToolMessages.getString("EditDialog.varAntTargetLabel")); //$NON-NLS-1$ return dialogArea; @@ -820,18 +818,18 @@ public class EditDialog extends TitleAreaDialog { private class TargetSelectionDialog extends SelectionDialog implements ICheckStateListener { private ArrayList selectedTargets = new ArrayList(); private CheckboxTableViewer listViewer; - private Project project; + private AntTargetList targetList; private AntTargetLabelProvider labelProvider = new AntTargetLabelProvider(); public TargetSelectionDialog(Shell parent, String location) { super(parent); IPath path = new Path(location); - project = AntUtil.createAntProject(path); + targetList = AntUtil.getTargetList(path); setTitle(ToolMessages.getString("EditDialog.varAntTargetLabel")); //$NON-NLS-1$ } public void checkStateChanged(CheckStateChangedEvent e) { - Target checkedTarget = (Target)e.getElement(); + String checkedTarget = (String)e.getElement(); if (e.getChecked()) selectedTargets.add(checkedTarget); else @@ -854,15 +852,15 @@ public class EditDialog extends TitleAreaDialog { listViewer.getTable().setLayoutData(data); listViewer.setSorter(new ViewerSorter() { public int compare(Viewer viewer,Object o1,Object o2) { - return ((Target)o1).getName().compareTo(((Target)o2).getName()); + return ((String)o1).compareTo((String)o2); } }); - if (project != null && project.getDefaultTarget() != null) - labelProvider.setDefaultTargetName(project.getDefaultTarget()); + if (targetList != null && targetList.getDefaultTarget() != null) + labelProvider.setDefaultTargetName(targetList.getDefaultTarget()); listViewer.setLabelProvider(labelProvider); listViewer.setContentProvider(new AntTargetContentProvider()); - listViewer.setInput(project); + listViewer.setInput(targetList); listViewer.addCheckStateListener(this); listViewer.refresh(); @@ -880,8 +878,7 @@ public class EditDialog extends TitleAreaDialog { protected String[] getTargetNames() { String[] result = new String[selectedTargets.size()]; - for (int i = 0; i < selectedTargets.size(); i++) - result[i] = ((Target) selectedTargets.get(i)).getName(); + selectedTargets.toArray(result); return result; } } diff --git a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/LogConsoleDocument.java b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/LogConsoleDocument.java index dda6ecd07..0e3da1764 100644 --- a/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/LogConsoleDocument.java +++ b/org.eclipse.ui.externaltools/External Tools/org/eclipse/ui/externaltools/internal/ui/LogConsoleDocument.java @@ -9,13 +9,17 @@ http://www.eclipse.org/legal/cpl-v05.html Contributors: **********************************************************************/ +import java.util.*; import java.util.ArrayList; import org.apache.tools.ant.Project; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.TextViewer; +import org.eclipse.jface.util.*; +import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.custom.StyleRange; +import org.eclipse.swt.graphics.*; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Display; @@ -36,10 +40,10 @@ public class LogConsoleDocument { static Color DEBUG_COLOR; static Font ANT_FONT; - // class variables that handle the colors and the font; - private static LogPropertyChangeListener changeListener = LogPropertyChangeListener.getInstance(); private static LogConsoleDocument instance = null; + private LogPropertyChangeListener changeListener = new LogPropertyChangeListener(); + /*package*/ ArrayList views = new ArrayList(); private Document document; private ArrayList styleRanges; @@ -190,7 +194,71 @@ public class LogConsoleDocument { break; default: addRangeStyle(start, end, LogConsoleDocument.INFO_COLOR); + } } -} + + private class LogPropertyChangeListener implements IPropertyChangeListener { + + // private constructor to ensure the singleton + private LogPropertyChangeListener() { + } + + /** + * @see IPropertyChangeListener#propertyChange(PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent event) { + String propertyName= event.getProperty(); + + if (propertyName.equals(IPreferenceConstants.CONSOLE_ERROR_RGB)) { + Color temp = LogConsoleDocument.ERROR_COLOR; + LogConsoleDocument.ERROR_COLOR = ToolsPreferencePage.getPreferenceColor(IPreferenceConstants.CONSOLE_ERROR_RGB); + temp.dispose(); + clearOutput(); + } else if (propertyName.equals(IPreferenceConstants.CONSOLE_WARNING_RGB)) { + Color temp = LogConsoleDocument.WARN_COLOR; + LogConsoleDocument.WARN_COLOR = ToolsPreferencePage.getPreferenceColor(IPreferenceConstants.CONSOLE_WARNING_RGB); + temp.dispose(); + clearOutput(); + } else if (propertyName.equals(IPreferenceConstants.CONSOLE_INFO_RGB)) { + Color temp = LogConsoleDocument.INFO_COLOR; + LogConsoleDocument.INFO_COLOR = ToolsPreferencePage.getPreferenceColor(IPreferenceConstants.CONSOLE_INFO_RGB); + temp.dispose(); + clearOutput(); + } else if (propertyName.equals(IPreferenceConstants.CONSOLE_VERBOSE_RGB)) { + Color temp = LogConsoleDocument.VERBOSE_COLOR; + LogConsoleDocument.VERBOSE_COLOR = ToolsPreferencePage.getPreferenceColor(IPreferenceConstants.CONSOLE_VERBOSE_RGB); + temp.dispose(); + clearOutput(); + } else if (propertyName.equals(IPreferenceConstants.CONSOLE_DEBUG_RGB)) { + Color temp = LogConsoleDocument.DEBUG_COLOR; + LogConsoleDocument.DEBUG_COLOR = ToolsPreferencePage.getPreferenceColor(IPreferenceConstants.CONSOLE_DEBUG_RGB); + temp.dispose(); + clearOutput(); + } else if (propertyName.equals(IPreferenceConstants.CONSOLE_FONT)) { + FontData data= ToolsPreferencePage.getConsoleFontData(); + Font temp= LogConsoleDocument.ANT_FONT; + LogConsoleDocument.ANT_FONT = new Font(Display.getCurrent(), data); + temp.dispose(); + updateFont(); + } else + return; + } + + /** + * Clears the output of all the consoles + */ + private void clearOutput() { + LogConsoleDocument.getInstance().clearOutput(); + } + + /** + * Updates teh font in all the consoles + */ + private void updateFont() { + for (Iterator iterator = LogConsoleDocument.getInstance().getViews().iterator(); iterator.hasNext();) + ((LogConsoleView) iterator.next()).updateFont(); + } + } + } |