Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 55355
Collapse All | Expand All

(-)plugin.properties (-2 / +7 lines)
Lines 86-92 Link Here
86
commentsColor.description=The color used in the Ant editor for comments.
86
commentsColor.description=The color used in the Ant editor for comments.
87
87
88
templatesName = Ant Templates Definitions
88
templatesName = Ant Templates Definitions
89
filesetTemplate.description= Ant fileset type with include clause
89
90
propertyTemplate.description= Ant property with name and value
90
xml.contextType.name= Ant Script
91
92
ant.resolvers.src= Source Fileset
93
ant.resolvers.src.description= A source fileset
94
ant.resolvers.dst= Destination Fileset
95
ant.resolvers.dst.description= An output fileset
91
96
92
Ant.marker.label = Ant Buildfile Problem
97
Ant.marker.label = Ant Buildfile Problem
(-)plugin.xml (-16 / +28 lines)
Lines 450-471 Link Here
450
		</colorDefinition>
450
		</colorDefinition>
451
   </extension>
451
   </extension>
452
   
452
   
453
    <extension
453
   <extension
454
      	 point="org.eclipse.ant.ui.antTemplates">
454
         point="org.eclipse.ui.editors.templates">
455
      <antTemplate
455
      <contextType
456
            name="fileset"
456
            name="%xml.contextType.name"
457
            description="%filesetTemplate.description"
457
            class="org.eclipse.ant.internal.ui.editor.templates.XMLContextType"
458
            pattern="&lt;fileset dir=&quot;${dir}&quot;&gt;
458
            id="org.eclipse.ant.ui.templateContextType.XML">
459
		&lt;include name=&quot;${pattern}&quot; /&gt;
459
      </contextType>
460
	&lt;/fileset&gt;
460
      <resolver
461
">
461
            name="%ant.resolvers.src"
462
      </antTemplate>
462
            type="src"
463
       <antTemplate
463
            icon="templates/icons/resolver.gif"
464
            name="property"
464
            description="%ant.resolvers.src.description"
465
            description="%propertyTemplate.description"
465
            contextTypeId="org.eclipse.ant.ui.templateContextType.XML"
466
            pattern="&lt;property name=&quot;${name}&quot; value=&quot;${value}&quot;/&gt;">
466
            class="org.eclipse.ant.internal.ui.editor.templates.AntVariableResolver">
467
      </antTemplate>
467
      </resolver>
468
    </extension>
468
      <resolver
469
            name="%ant.resolvers.dst"
470
            type="dst"
471
            icon="templates/icons/resolver.gif"
472
            description="%ant.resolvers.dst.description"
473
            contextTypeId="org.eclipse.ant.ui.templateContextType.XML"
474
            class="org.eclipse.ant.internal.ui.editor.templates.AntVariableResolver">
475
      </resolver>
476
      <include
477
      		file="templates/ant.xml"
478
      		translations="templates/ant.properties">
479
      </include>
480
   </extension>
469
    
481
    
470
	<extension id="buildFileProblem" name="%Ant.marker.label" point="org.eclipse.core.resources.markers">
482
	<extension id="buildFileProblem" name="%Ant.marker.label" point="org.eclipse.core.resources.markers">
471
  		<super type="org.eclipse.core.resources.problemmarker" /> 
483
  		<super type="org.eclipse.core.resources.problemmarker" /> 
(-)Ant Editor/org/eclipse/ant/internal/ui/editor/AntEditorCompletionProcessor.java (-36 / +90 lines)
Lines 56-61 Link Here
56
import org.eclipse.ant.internal.ui.editor.model.AntTargetNode;
56
import org.eclipse.ant.internal.ui.editor.model.AntTargetNode;
57
import org.eclipse.ant.internal.ui.editor.model.AntTaskNode;
57
import org.eclipse.ant.internal.ui.editor.model.AntTaskNode;
58
import org.eclipse.ant.internal.ui.editor.outline.AntModel;
58
import org.eclipse.ant.internal.ui.editor.outline.AntModel;
59
import org.eclipse.ant.internal.ui.editor.templates.*;
59
import org.eclipse.ant.internal.ui.model.AntUIImages;
60
import org.eclipse.ant.internal.ui.model.AntUIImages;
60
import org.eclipse.ant.internal.ui.model.AntUIPlugin;
61
import org.eclipse.ant.internal.ui.model.AntUIPlugin;
61
import org.eclipse.ant.internal.ui.model.IAntUIConstants;
62
import org.eclipse.ant.internal.ui.model.IAntUIConstants;
Lines 69-76 Link Here
69
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
70
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
70
import org.eclipse.jface.text.contentassist.IContextInformation;
71
import org.eclipse.jface.text.contentassist.IContextInformation;
71
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
72
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
73
import org.eclipse.jface.text.templates.ContextType;
72
import org.eclipse.jface.text.templates.DocumentTemplateContext;
74
import org.eclipse.jface.text.templates.DocumentTemplateContext;
73
import org.eclipse.jface.text.templates.Template;
75
import org.eclipse.jface.text.templates.Template;
76
import org.eclipse.jface.text.templates.TemplateCompletionProcessor;
74
import org.eclipse.jface.text.templates.TemplateContext;
77
import org.eclipse.jface.text.templates.TemplateContext;
75
import org.eclipse.jface.text.templates.TemplateProposal;
78
import org.eclipse.jface.text.templates.TemplateProposal;
76
import org.eclipse.swt.graphics.Image;
79
import org.eclipse.swt.graphics.Image;
Lines 85-91 Link Here
85
/**
88
/**
86
 * The text completion processor for the Ant Editor.
89
 * The text completion processor for the Ant Editor.
87
 */
90
 */
88
public class AntEditorCompletionProcessor implements IContentAssistProcessor {       
91
public class AntEditorCompletionProcessor  extends TemplateCompletionProcessor implements IContentAssistProcessor  {       
89
 
92
 
90
 	private Comparator proposalComparator= new Comparator() {
93
 	private Comparator proposalComparator= new Comparator() {
91
		public int compare(Object o1, Object o2) {
94
		public int compare(Object o1, Object o2) {
Lines 205-218 Link Here
205
    }
208
    }
206
    
209
    
207
	/**
210
	/**
208
	 * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeCompletionProposals(ITextViewer, int)
211
     * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeCompletionProposals(ITextViewer, int)
209
	 */
212
     */
210
	public ICompletionProposal[] computeCompletionProposals(ITextViewer refViewer, int documentOffset) {
213
	public ICompletionProposal[] computeCompletionProposals(
211
		this.viewer = refViewer;
214
            ITextViewer refViewer, int documentOffset) {
212
		return determineProposals();
215
        
213
	}
216
        this.viewer = refViewer;
217
        
218
        return mergeProposals(super.computeCompletionProposals(refViewer,
219
                documentOffset), determineProposals());
220
    }
214
	
221
	
215
	/**
222
	/**
223
     * @param proposals1
224
     * @param proposals2
225
     * @return
226
     */
227
    private ICompletionProposal[] mergeProposals(
228
            ICompletionProposal[] proposals1, ICompletionProposal[] proposals2) {
229
230
        ICompletionProposal[] combinedProposals = new ICompletionProposal[proposals1.length
231
                + proposals2.length];
232
                
233
		System.arraycopy(proposals1,0,combinedProposals,0,proposals1.length);
234
		System.arraycopy(proposals2,0,combinedProposals,proposals1.length,proposals2.length);		                
235
236
		Arrays.sort(combinedProposals,proposalComparator);
237
        return combinedProposals;
238
    }
239
240
    /**
216
	 * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeContextInformation(ITextViewer, int)
241
	 * @see org.eclipse.jface.text.contentassist.IContentAssistProcessor#computeContextInformation(ITextViewer, int)
217
	 */
242
	 */
218
	public IContextInformation[] computeContextInformation(ITextViewer refViewer, int documentOffset) {
243
	public IContextInformation[] computeContextInformation(ITextViewer refViewer, int documentOffset) {
Lines 657-663 Link Here
657
        // think of a usecase for templates other than tasks at the moment, but
682
        // think of a usecase for templates other than tasks at the moment, but
658
        // since users can add templates via the preferences we may need to 
683
        // since users can add templates via the preferences we may need to 
659
        // rethink this.
684
        // rethink this.
660
        proposals.addAll(getTemplateProposals(document, prefix));
685
        // proposals.addAll(getTemplateProposals(document, prefix));
661
        
686
        
662
        return (ICompletionProposal[])proposals.toArray(new ICompletionProposal[proposals.size()]);
687
        return (ICompletionProposal[])proposals.toArray(new ICompletionProposal[proposals.size()]);
663
   }
688
   }
Lines 674-707 Link Here
674
		}
699
		}
675
	}
700
	}
676
    
701
    
677
    /*
678
     * @return a collection of
679
     *         {@link org.eclipse.jface.text.templates.TemplateProposal}s
680
     */
681
    protected Collection getTemplateProposals(IDocument document, String prefix) {
682
   
683
        Point selection = viewer.getSelectedRange();
684
        IRegion selectedRegion = new Region(selection.x - (prefix.length() + 1), selection.y + prefix.length() + 1);
685
        if (selectedRegion.getOffset() == -1) {
686
        	return Collections.EMPTY_LIST;
687
        }
688
        TemplateContext templateContext = new DocumentTemplateContext(
689
                AntTemplates.CONTEXT, document, selectedRegion.getOffset(), selectedRegion.getLength()); //$NON-NLS-1$
690
691
       Template[] templates= AntTemplates.getAntTemplates();
692
       List proposals = new ArrayList(templates.length);
693
       TemplateProposal templateProposal;
694
       for (int i = 0; i < templates.length; i++) {
695
			Template template = templates[i];
696
			if (prefix.length() == 0 || template.getName().toLowerCase().startsWith(prefix)) {
697
				 templateProposal = new TemplateProposal(template, templateContext, selectedRegion, AntUIImages.getImage(IAntUIConstants.IMG_TEMPLATE_PROPOSAL));
698
				 proposals.add(templateProposal);
699
			}
700
		}
701
       
702
        return proposals;
703
    }
704
705
    private ICompletionProposal newCompletionProposal(IDocument document, String aPrefix, String elementName) {
702
    private ICompletionProposal newCompletionProposal(IDocument document, String aPrefix, String elementName) {
706
		additionalProposalOffset= 0;
703
		additionalProposalOffset= 0;
707
		Image proposalImage = AntUIImages.getImage(IAntUIConstants.IMG_TASK_PROPOSAL);
704
		Image proposalImage = AntUIImages.getImage(IAntUIConstants.IMG_TASK_PROPOSAL);
Lines 1314-1317 Link Here
1314
	public void setCompletionProposalAutoActivationCharacters(char[] activationSet) {
1311
	public void setCompletionProposalAutoActivationCharacters(char[] activationSet) {
1315
		autoActivationChars= activationSet;
1312
		autoActivationChars= activationSet;
1316
	}
1313
	}
1314
1315
	/**
1316
	 * We watch for angular brackets since those are often part of XML
1317
	 * templates.
1318
	 */
1319
	protected String extractPrefix(ITextViewer viewer, int offset) {
1320
		IDocument document= viewer.getDocument();
1321
		int i= offset;
1322
		if (i > document.getLength())
1323
			return ""; //$NON-NLS-1$
1324
		
1325
		try {
1326
			while (i > 0) {
1327
				char ch= document.getChar(i - 1);
1328
				if (ch != '<' && !Character.isJavaIdentifierPart(ch))
1329
					break;
1330
				i--;
1331
			}
1332
	
1333
			return document.get(i, offset - i);
1334
		} catch (BadLocationException e) {
1335
			return ""; //$NON-NLS-1$
1336
		}
1337
	}
1338
1339
	/**
1340
	 * Cut out angular brackets for relevance sorting, since the template name
1341
	 * does not contain the brackets.
1342
	 */
1343
	protected int getRelevance(Template template, String prefix) {
1344
		if (prefix.startsWith("<")) //$NON-NLS-1$
1345
			prefix= prefix.substring(1);
1346
		if (template.getName().startsWith(prefix))
1347
			return 90; 
1348
		return 0;
1349
	}
1350
1351
	/**
1352
	 * Simply return all templates.
1353
	 */
1354
	protected Template[] getTemplates(String contextTypeId) {
1355
		return AntTemplateAccess.getDefault().getTemplateStore().getTemplates();
1356
	}
1357
1358
	/**
1359
	 * Return the XML context type that is supported by this plugin. 
1360
	 */
1361
	protected ContextType getContextType(ITextViewer viewer, IRegion region) {
1362
		return AntTemplateAccess.getDefault().getContextTypeRegistry().getContextType(XMLContextType.XML_CONTEXT_TYPE);
1363
	}
1364
1365
    /* (non-Javadoc)
1366
     * @see org.eclipse.jface.text.templates.TemplateCompletionProcessor#getImage(org.eclipse.jface.text.templates.Template)
1367
     */
1368
    protected Image getImage(Template template) {
1369
        return AntUIImages.getImage(IAntUIConstants.IMG_TEMPLATE_PROPOSAL);
1370
    }
1317
}
1371
}
(-)Ant Editor/org/eclipse/ant/internal/ui/editor/AntTemplates.java (-76 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2004 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials 
4
 * are made available under the terms of the Common Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/cpl-v10.html
7
 * 
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.ant.internal.ui.editor;
12
13
import java.util.ArrayList;
14
import java.util.List;
15
16
import org.eclipse.ant.internal.ui.model.AntUIPlugin;
17
import org.eclipse.core.runtime.IConfigurationElement;
18
import org.eclipse.core.runtime.IExtensionPoint;
19
import org.eclipse.jface.text.templates.ContextType;
20
import org.eclipse.jface.text.templates.Template;
21
22
public class AntTemplates {
23
	
24
	private static final String EXTENSION_POINT_NAME= "antTemplates"; //$NON-NLS-1$
25
	
26
	public static final ContextType CONTEXT= new ContextType(AntTemplates.CONTEXT_NAME);
27
	public static final String CONTEXT_NAME= "ant"; //$NON-NLS-1$
28
	private static final String NAME= "name"; //$NON-NLS-1$
29
	private static final String DESCRIPTION= "description"; //$NON-NLS-1$
30
	private static final String PATTERN= "pattern"; //$NON-NLS-1$
31
32
	private static Template[] fgDefaultAntTemplates= null;
33
	
34
	private AntTemplates() {
35
	}
36
	
37
	/**
38
	 * Returns the set of Ant templates
39
     *
40
     * @returns set of Ant templates.
41
     */
42
	public static Template[] getAntTemplates() {
43
		if (fgDefaultAntTemplates == null) {
44
			IConfigurationElement[] extensions= extractExtensions();
45
			if (extensions == null) {
46
				return new Template[0];
47
			}
48
			computeDefaultTemplates(extensions);
49
		}
50
		return fgDefaultAntTemplates;
51
	}
52
	
53
	private static IConfigurationElement[] extractExtensions() {
54
		IExtensionPoint extensionPoint = AntUIPlugin.getDefault().getDescriptor().getExtensionPoint(EXTENSION_POINT_NAME);
55
		if (extensionPoint == null) {
56
			return null;
57
		}
58
		return extensionPoint.getConfigurationElements();
59
	}
60
	
61
	private static void computeDefaultTemplates(IConfigurationElement[] extensions) {
62
		List temp = new ArrayList(extensions.length);
63
		for (int i=0; i < extensions.length; i++) {
64
			IConfigurationElement element= extensions[i];
65
			String name = element.getAttribute(NAME);
66
			if (name == null) {
67
				continue;
68
			}
69
			String description = element.getAttribute(DESCRIPTION);
70
			String pattern = element.getAttribute(PATTERN);
71
			Template template= new Template(name, description, CONTEXT_NAME, pattern);
72
			temp.add(template);
73
		}
74
		fgDefaultAntTemplates= (Template[])temp.toArray(new Template[temp.size()]);
75
	}
76
}
(-)Ant (+95 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2004 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials 
4
 * are made available under the terms of the Common Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/cpl-v10.html
7
 * 
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.ant.internal.ui.editor.templates;
12
13
import java.io.IOException;
14
15
import org.eclipse.ant.internal.ui.model.AntUIPlugin;
16
import org.eclipse.core.runtime.IStatus;
17
import org.eclipse.core.runtime.Status;
18
import org.eclipse.jface.preference.IPreferenceStore;
19
import org.eclipse.jface.text.templates.ContextTypeRegistry;
20
import org.eclipse.jface.text.templates.persistence.TemplateStore;
21
22
23
/**
24
 *  
25
 */
26
27
public class AntTemplateAccess {
28
	/** Key to store custom templates. */
29
	private static final String CUSTOM_TEMPLATES_KEY= "org.eclipse.ant.ui.customtemplates"; //$NON-NLS-1$
30
	
31
	/** The shared instance. */
32
	private static AntTemplateAccess fInstance;
33
	
34
	/** The template store. */
35
	private TemplateStore fStore;
36
	
37
	/** The context type registry. */
38
	private ContextTypeRegistry fRegistry;
39
	
40
	private AntTemplateAccess() {
41
	}
42
43
	/**
44
	 * Returns the shared instance.
45
	 * 
46
	 * @return the shared instance
47
	 */
48
	public static AntTemplateAccess getDefault() {
49
		if (fInstance == null)
50
			fInstance= new AntTemplateAccess();
51
		return fInstance;
52
	}
53
54
	/**
55
	 * Returns this plug-in's template store.
56
	 * 
57
	 * @return the template store of this plug-in instance
58
	 */
59
	public TemplateStore getTemplateStore() {
60
		if (fStore == null) {
61
			fStore= new TemplateStore(AntUIPlugin.getDefault().getPreferenceStore(), CUSTOM_TEMPLATES_KEY);
62
			try {
63
				fStore.load();
64
			} catch (IOException e) {
65
				AntUIPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, "org.eclipse.ant.ui", IStatus.OK, "", e)); //$NON-NLS-1$ //$NON-NLS-2$
66
			}
67
		}
68
		return fStore;
69
	}
70
71
	/**
72
	 * Returns this plug-in's context type registry.
73
	 * 
74
	 * @return the context type registry for this plug-in instance
75
	 */
76
	public ContextTypeRegistry getContextTypeRegistry() {
77
		if (fRegistry == null) {
78
			// create an configure the contexts available in the template editor
79
			fRegistry= new ContextTypeRegistry();
80
			fRegistry.addContextType(XMLContextType.XML_CONTEXT_TYPE);
81
		}
82
		return fRegistry;
83
	}
84
85
86
	public IPreferenceStore getPreferenceStore() {	    
87
		return AntUIPlugin.getDefault().getPreferenceStore();
88
	}
89
90
	public void savePluginPreferences() {
91
		AntUIPlugin.getDefault().savePluginPreferences();
92
	}
93
94
95
}
(-)Ant (+50 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2003 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials 
4
 * are made available under the terms of the Common Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/cpl-v10.html
7
 * 
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.ant.internal.ui.editor.templates;
12
13
import java.util.Arrays;
14
import java.util.Comparator;
15
16
import org.eclipse.jface.text.templates.TemplateContext;
17
import org.eclipse.jface.text.templates.TemplateVariableResolver;
18
19
/**
20
 * Looks up existing ant variables and proposes them. The proposals are sorted by 
21
 * their prefix-likeness with the variable type.
22
 */
23
public class AntVariableResolver extends TemplateVariableResolver {
24
	/*
25
	 * @see org.eclipse.jface.text.templates.TemplateVariableResolver#resolveAll(org.eclipse.jface.text.templates.TemplateContext)
26
	 */
27
	protected String[] resolveAll(TemplateContext context) {
28
		String[] proposals= new String[] { "${srcDir}", "${dstDir}" }; //$NON-NLS-1$ //$NON-NLS-2$
29
		
30
		Arrays.sort(proposals, new Comparator() {
31
32
			public int compare(Object o1, Object o2) {
33
				return getCommonPrefixLength(getType(), (String) o2) - getCommonPrefixLength(getType(), (String) o1);
34
			}
35
36
			private int getCommonPrefixLength(String type, String var) {
37
				int i= 0;
38
				CharSequence vSeq= var.subSequence(2, var.length() - 1); // strip away ${}
39
				while (i < type.length() && i < vSeq.length())
40
					if (Character.toLowerCase(type.charAt(i)) == Character.toLowerCase(vSeq.charAt(i)))
41
						i++;
42
					else
43
						break;
44
				return i;
45
			}
46
		});
47
		
48
		return proposals;
49
	}
50
}
(-)Ant (+43 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2003 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials 
4
 * are made available under the terms of the Common Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/cpl-v10.html
7
 * 
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.ant.internal.ui.editor.templates;
12
13
import org.eclipse.jface.text.templates.ContextType;
14
import org.eclipse.jface.text.templates.GlobalVariables;
15
16
17
/**
18
 * A very simple context type.
19
 */
20
public class XMLContextType extends ContextType {
21
22
	/** This context's id */
23
	public static final String XML_CONTEXT_TYPE= "org.eclipse.ant.ui.templateContextType.XML"; //$NON-NLS-1$
24
25
	/**
26
	 * Creates a new XML context type. 
27
	 */
28
	public XMLContextType() {
29
		addGlobalResolvers();
30
	}
31
32
	private void addGlobalResolvers() {
33
		addResolver(new GlobalVariables.Cursor());
34
		addResolver(new GlobalVariables.WordSelection());
35
		addResolver(new GlobalVariables.LineSelection());
36
		addResolver(new GlobalVariables.Dollar());
37
		addResolver(new GlobalVariables.Date());
38
		addResolver(new GlobalVariables.Year());
39
		addResolver(new GlobalVariables.Time());
40
		addResolver(new GlobalVariables.User());
41
	}
42
43
}
(-)templates/ant.properties (+5 lines)
Added Link Here
1
filesetTemplate.description= Ant fileset type with include clause
2
propertyTemplate.description= Ant property with name and value
3
4
ant.tasks.javac.name= javac
5
ant.tasks.javac.desc= Add a javac task
(-)templates/ant.xml (+30 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<templates>
3
4
<template 
5
	context="org.eclipse.ant.ui.templateContextType.XML" 
6
	description="%ant.tasks.javac.desc" 
7
	id="org.eclipse.ant.ui.templates.javac1" 
8
	name="%ant.tasks.javac.name">&lt;javac srcdir=&quot;${src}&quot;
9
         destdir=&quot;${dst}&quot;
10
         classpath=&quot;${jarfile}&quot;
11
         debug=&quot;${on}&quot;
12
/&gt;${cursor}</template>
13
14
<template 
15
	context="org.eclipse.ant.ui.templateContextType.XML" 
16
	description="%filesetTemplate.description" 
17
	id="org.eclipse.ant.ui.templates.fileset1" 
18
	name="fileset">&lt;fileset dir=&quot;${dir}&quot;&gt;
19
		&lt;include name=&quot;${pattern}&quot; /&gt;
20
	&lt;/fileset&gt;
21
</template>
22
23
<template 
24
	context="org.eclipse.ant.ui.templateContextType.XML" 
25
	description="%propertyTemplate.description" 
26
	id="org.eclipse.ant.ui.templates.property1" 
27
	name="property">&lt;property name=&quot;${name}&quot; value=&quot;${value}&quot;/&gt;
28
</template>
29
30
</templates>
(-)templates/resolver.gif (+2 lines)
Added Link Here
1
GIF89a÷E>A̰ÖüôÿٞüϺÜöçÿ¹ƒÛÊ©æèäìH@QÒÊÛkD?y[žŸ}Ì¥ŒÈ©ž¹Šm¸¶–çzfš­™Ízl?X7‘E4ctZžP?mNBcª?Õ_GŒ¨šÁJQ?vRGhzkšQHc¹¬ÓçäíYGƒZJ?XJyǰýĸß]LŠ€m´¬£Ã¦¢°E2|K<wH:rSD€aQ‘XMzµ®ÉXI‹\L?[N…€q¯B;YÛ×éJ=|VHŠZLŽåâñH:†QC?ibŠsn‹ZN•^S?\P—_SœYPˆ\T„vr‹ œ¶ÎÌÙçæìcY¡ÕÓâåäëPH‹aX¢]V˜UN—d]¯c\­b[¨`Z¢g`¦d^³VRšc`¥igª¤¥öââïââèWY¯oq¼GL¢oxÛs|ÝZ_¤qu©x…ïz‡ñw‚ìuèuæt~ãs}áwƒåš¢ì’˜ÐIR˜yˆôw†ð{‰õzˆów„íw„êq|Ո•ù~‰ßnxˆ™ý˜¦ý1=|Wbœåæëÿÿÿ!ù€,´	H° Áƒ{L€° Â#æ ` Â?>ZHPP°K@ÈÀÉ"å‰zPÆ?(C„ìpñ€ ˆ`úl¹Â¤0(ăgO9sèœ1SÇN›<yjàæ–)TªX‰bäÈP7|ЈI£f
2
›1wô¼y3pÆhÔHaCF,þAq"†%L|H€dIÁ&(0ð€!Ž JzYá`à Iœ ÜÌys@;

Return to bug 55355