diff options
Diffstat (limited to 'org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence')
6 files changed, 0 insertions, 1050 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java deleted file mode 100644 index 560185275e9..00000000000 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java +++ /dev/null @@ -1,173 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jface.text.templates.persistence; - -import org.eclipse.jface.text.Assert; -import org.eclipse.jface.text.templates.Template; - - -/** - * TemplatePersistenceData stores information about a template. It uniquely - * references contributed templates via their id. Contributed templates may be - * deleted or modified. All template may be enabled or not. - * - * @since 3.0 - */ -public class TemplatePersistenceData { - private final Template fOriginalTemplate; - private final String fId; - private final boolean fOriginalIsEnabled; - - private Template fCustomTemplate= null; - private boolean fIsDeleted= false; - private boolean fCustomIsEnabled= true; - - /** - * Creates a new, user-added instance that is not linked to a contributed - * template. - * - * @param template the template which is stored by the new instance - * @param enabled whether the template is enabled - */ - public TemplatePersistenceData(Template template, boolean enabled) { - this(template, enabled, null); - } - - /** - * Creates a new instance. If <code>id</code> is not <code>null</code>, - * the instance is represents a template that is contributed and can be - * identified via its id. - * - * @param template the template which is stored by the new instance - * @param enabled whether the template is enabled - * @param id the id of the template, or <code>null</code> if a user-added - * instance should be created - */ - public TemplatePersistenceData(Template template, boolean enabled, String id) { - Assert.isNotNull(template); - fOriginalTemplate= template; - fCustomTemplate= template; - fOriginalIsEnabled= enabled; - fCustomIsEnabled= enabled; - fId= id; - } - - /** - * Returs the id of this template store, or <code>null</code> if there is none. - * - * @return the id of this template store - */ - public String getId() { - return fId; - } - - /** - * Returns the deletion state of the stored template. This is only relevant - * of contributed templates. - * - * @return the deletion state of the stored template - */ - public boolean isDeleted() { - return fIsDeleted; - } - - /** - * Sets the deletion state of the stored template. - * - * @param isDeleted the deletion state of the stored template - */ - public void setDeleted(boolean isDeleted) { - fIsDeleted= isDeleted; - } - - /** - * Returns the template encapsulated by the receiver. - * - * @return the template encapsulated by the receiver - */ - public Template getTemplate() { - return fCustomTemplate; - } - - - /** - * Sets the template encapsulated by the receiver. - * - * @param template the new template - */ - public void setTemplate(Template template) { - fCustomTemplate= template; - } - - /** - * Returns whether the receiver represents a custom template, i.e. is either - * a user-added template or a contributed template that has been modified. - * - * @return <code>true</code> if the contained template is a custom - * template and cannot be reconstructed from the contributed - * templates - */ - public boolean isCustom() { - return fId == null - || fIsDeleted - || fOriginalIsEnabled != fCustomIsEnabled - || !fOriginalTemplate.equals(fCustomTemplate); - } - - /** - * Returns whether the receiver represents a modified template, i.e. a - * contributed template that has been changed. - * - * @return <code>true</code> if the contained template is contributed but has been modified, <code>false</code> otherwise - */ - public boolean isModified() { - return isCustom() && !isUserAdded(); - } - - /** - * Returns <code>true</code> if the contained template was added by a - * user, i.e. does not reference a contributed template. - * - * @return <code>true</code> if the contained template was added by a user, <code>false</code> otherwise - */ - public boolean isUserAdded() { - return fId == null; - } - - - /** - * Reverts the template to its original setting. - */ - public void revert() { - fCustomTemplate= fOriginalTemplate; - fCustomIsEnabled= fOriginalIsEnabled; - fIsDeleted= false; - } - - - /** - * Returns the enablement state of the contained template. - * - * @return the enablement state of the contained template - */ - public boolean isEnabled() { - return fCustomIsEnabled; - } - - /** - * Sets the enablement state of the contained template. - * - * @param isEnabled the new enablement state of the contained template - */ - public void setEnabled(boolean isEnabled) { - fCustomIsEnabled= isEnabled; - } -} diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceMessages.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceMessages.java deleted file mode 100644 index 064fc83eb2e..00000000000 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceMessages.java +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jface.text.templates.persistence; - -import java.text.MessageFormat; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -/** - * @since 3.0 - */ -class TemplatePersistenceMessages { - - private static final String RESOURCE_BUNDLE= TemplatePersistenceMessages.class.getName(); - private static ResourceBundle fgResourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE); - - private TemplatePersistenceMessages() { - } - - /** - * @param key - * @return - */ - public static String getString(String key) { - try { - return fgResourceBundle.getString(key); - } catch (MissingResourceException e) { - return '!' + key + '!'; - } - } - - /** - * Gets a string from the resource bundle and formats it with the argument - * - * @param key the string used to get the bundle value, must not be null - * @param arg - * @return - */ - public static String getFormattedString(String key, Object arg) { - return MessageFormat.format(getString(key), new Object[] { arg }); - } - - - /** - * Gets a string from the resource bundle and formats it with arguments - * @param key - * @param args - * @return - */ - public static String getFormattedString(String key, Object[] args) { - return MessageFormat.format(getString(key), args); - } -} diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceMessages.properties b/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceMessages.properties deleted file mode 100644 index 7d00d3dc501..00000000000 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceMessages.properties +++ /dev/null @@ -1,14 +0,0 @@ -############################################################################### -# Copyright (c) 2000, 2004 IBM Corporation and others. -# All rights reserved. This program and the accompanying materials -# are 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: -# IBM Corporation - initial API and implementation -############################################################################### - -TemplateReaderWriter.duplicate.id= Duplicate template id -TemplateReaderWriter.error.missing_attribute= Missing required attribute -TemplateReaderWriter.error.illegal_boolean_attribute= Illegal boolean attribute, must be "true" or "false". diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplateReaderWriter.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplateReaderWriter.java deleted file mode 100644 index e2ec4596ef1..00000000000 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplateReaderWriter.java +++ /dev/null @@ -1,345 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jface.text.templates.persistence; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Reader; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.MissingResourceException; -import java.util.ResourceBundle; -import java.util.Set; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import org.eclipse.jface.text.Assert; -import org.eclipse.jface.text.templates.Template; - -/** - * Serializes templates as character stream and reads the same format back. - * Clients may instantiate this class, it is not intended to be subclassed. - * - * @since 3.0 - */ -public class TemplateReaderWriter { - - private static final String TEMPLATE_ROOT = "templates"; //$NON-NLS-1$ - private static final String TEMPLATE_ELEMENT = "template"; //$NON-NLS-1$ - private static final String NAME_ATTRIBUTE= "name"; //$NON-NLS-1$ - private static final String ID_ATTRIBUTE= "id"; //$NON-NLS-1$ - private static final String DESCRIPTION_ATTRIBUTE= "description"; //$NON-NLS-1$ - private static final String CONTEXT_ATTRIBUTE= "context"; //$NON-NLS-1$ - private static final String ENABLED_ATTRIBUTE= "enabled"; //$NON-NLS-1$ - private static final String DELETED_ATTRIBUTE= "deleted"; //$NON-NLS-1$ - - /** - * Create a new instance. - */ - public TemplateReaderWriter() { - } - - /** - * Reads templates from a reader and returns them. The reader must present - * a serialized form as produced by the <code>save</code> method. - * - * @param reader the reader to read templates from - * @return the read templates, encapsulated in instances of <code>TemplatePersistenceData</code> - * @throws IOException if reading from the stream fails - */ - public TemplatePersistenceData[] read(Reader reader) throws IOException { - return read(reader, null); - } - - /** - * Reads templates from a stream and adds them to the templates. - * - * @param reader the reader to read templates from - * @param bundle a resource bundle to use for translating the read templates, or <code>null</code> if no translation should occur - * @return the read templates, encapsulated in instances of <code>TemplatePersistenceData</code> - * @throws IOException if reading from the stream fails - */ - public TemplatePersistenceData[] read(Reader reader, ResourceBundle bundle) throws IOException { - return read(new InputSource(reader), bundle); - } - - /** - * Reads templates from a stream and adds them to the templates. - * - * @param stream the byte stream to read templates from - * @param bundle a resource bundle to use for translating the read templates, or <code>null</code> if no translation should occur - * @return the read templates, encapsulated in instances of <code>TemplatePersistenceData</code> - * @throws IOException if reading from the stream fails - */ - public TemplatePersistenceData[] read(InputStream stream, ResourceBundle bundle) throws IOException { - return read(new InputSource(stream), bundle); - } - - /** - * Reads templates from an InputSource and adds them to the templates. - * - * @param source the input source - * @param bundle a resource bundle to use for translating the read templates, or <code>null</code> if no translation should occur - * @return the read templates, encapsulated in instances of <code>TemplatePersistenceData</code> - * @throws IOException if reading from the stream fails - */ - private TemplatePersistenceData[] read(InputSource source, ResourceBundle bundle) throws IOException { - try { - Collection templates= new ArrayList(); - Set ids= new HashSet(); - - DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); - DocumentBuilder parser= factory.newDocumentBuilder(); - Document document= parser.parse(source); - - NodeList elements= document.getElementsByTagName(TEMPLATE_ELEMENT); - - int count= elements.getLength(); - for (int i= 0; i != count; i++) { - Node node= elements.item(i); - NamedNodeMap attributes= node.getAttributes(); - - if (attributes == null) - continue; - - String id= getStringValue(attributes, ID_ATTRIBUTE, null); - if (id != null && ids.contains(id)) - throw new IOException(TemplatePersistenceMessages.getString("TemplateReaderWriter.duplicate.id")); //$NON-NLS-1$ - - boolean deleted = getBooleanValue(attributes, DELETED_ATTRIBUTE, false); - - String name= getStringValue(attributes, NAME_ATTRIBUTE); - name= translateString(name, bundle); - - String description= getStringValue(attributes, DESCRIPTION_ATTRIBUTE, ""); //$NON-NLS-1$ - description= translateString(description, bundle); - - String context= getStringValue(attributes, CONTEXT_ATTRIBUTE); - - if (name == null || context == null) - throw new IOException(TemplatePersistenceMessages.getString("TemplateReaderWriter.error.missing_attribute")); //$NON-NLS-1$ - - boolean enabled = getBooleanValue(attributes, ENABLED_ATTRIBUTE, true); - - StringBuffer buffer= new StringBuffer(); - NodeList children= node.getChildNodes(); - for (int j= 0; j != children.getLength(); j++) { - String value= children.item(j).getNodeValue(); - if (value != null) - buffer.append(value); - } - String pattern= buffer.toString(); - pattern= translateString(pattern, bundle); - - Template template= new Template(name, description, context, pattern); - TemplatePersistenceData data= new TemplatePersistenceData(template, enabled, id); - data.setDeleted(deleted); - - templates.add(data); - } - - return (TemplatePersistenceData[]) templates.toArray(new TemplatePersistenceData[templates.size()]); - - } catch (ParserConfigurationException e) { - Assert.isTrue(false); - } catch (SAXException e) { - Throwable t= e.getCause(); - if (t instanceof IOException) - throw (IOException) t; - else - throw new IOException(t.getMessage()); - } - - return null; // dummy - } - - /** - * Saves the templates as XML, encoded as UTF-8 onto the given byte stream. - * - * @param templates the templates to save - * @param stream the byte output to write the templates to in XML - * @throws IOException if writing the templates fails - */ - public void save(TemplatePersistenceData[] templates, OutputStream stream) throws IOException { - save(templates, new StreamResult(stream)); - } - - /** - * Saves the templates as XML. - * - * @param templates the templates to save - * @param writer the writer to write the templates to in XML - * @throws IOException if writing the templates fails - */ - public void save(TemplatePersistenceData[] templates, Writer writer) throws IOException { - save(templates, new StreamResult(writer)); - } - - /** - * Saves the templates as XML. - * - * @param templates the templates to save - * @param result the stream result to write to - * @throws IOException if writing the templates fails - */ - private void save(TemplatePersistenceData[] templates, StreamResult result) throws IOException { - try { - DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); - DocumentBuilder builder= factory.newDocumentBuilder(); - Document document= builder.newDocument(); - - Node root= document.createElement(TEMPLATE_ROOT); //$NON-NLS-1$ - document.appendChild(root); - - for (int i= 0; i < templates.length; i++) { - TemplatePersistenceData data= templates[i]; - Template template= data.getTemplate(); - - Node node= document.createElement(TEMPLATE_ELEMENT); - root.appendChild(node); - - NamedNodeMap attributes= node.getAttributes(); - - String id= data.getId(); - if (id != null) { - Attr idAttr= document.createAttribute(ID_ATTRIBUTE); - idAttr.setValue(id); - attributes.setNamedItem(idAttr); - } - - if (template != null) { - Attr name= document.createAttribute(NAME_ATTRIBUTE); - name.setValue(template.getName()); - attributes.setNamedItem(name); - } - - if (template != null) { - Attr description= document.createAttribute(DESCRIPTION_ATTRIBUTE); - description.setValue(template.getDescription()); - attributes.setNamedItem(description); - } - - if (template != null) { - Attr context= document.createAttribute(CONTEXT_ATTRIBUTE); - context.setValue(template.getContextTypeId()); - attributes.setNamedItem(context); - } - - Attr enabled= document.createAttribute(ENABLED_ATTRIBUTE); - enabled.setValue(data.isEnabled() ? Boolean.toString(true) : Boolean.toString(false)); //$NON-NLS-1$ //$NON-NLS-2$ - attributes.setNamedItem(enabled); - - Attr deleted= document.createAttribute(DELETED_ATTRIBUTE); - deleted.setValue(data.isDeleted() ? Boolean.toString(true) : Boolean.toString(false)); //$NON-NLS-1$ //$NON-NLS-2$ - attributes.setNamedItem(deleted); - - if (template != null) { - Text pattern= document.createTextNode(template.getPattern()); - node.appendChild(pattern); - } - } - - - Transformer transformer=TransformerFactory.newInstance().newTransformer(); - transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$ - transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$ - DOMSource source = new DOMSource(document); - - transformer.transform(source, result); - - } catch (ParserConfigurationException e) { - Assert.isTrue(false); - } catch (TransformerException e) { - if (e.getException() instanceof IOException) - throw (IOException) e.getException(); - Assert.isTrue(false); - } - } - - private boolean getBooleanValue(NamedNodeMap attributes, String attribute, boolean defaultValue) throws SAXException { - Node enabledNode= attributes.getNamedItem(attribute); - if (enabledNode == null) - return defaultValue; - else if (enabledNode.getNodeValue().equals(Boolean.toString(true))) - return true; - else if (enabledNode.getNodeValue().equals(Boolean.toString(false))) - return false; - else - throw new SAXException(TemplatePersistenceMessages.getString("TemplateReaderWriter.error.illegal_boolean_attribute")); //$NON-NLS-1$ - } - - private String getStringValue(NamedNodeMap attributes, String name) throws SAXException { - String val= getStringValue(attributes, name, null); - if (val == null) - throw new SAXException(TemplatePersistenceMessages.getString("TemplateReaderWriter.error.missing_attribute")); //$NON-NLS-1$ - return val; - } - - private String getStringValue(NamedNodeMap attributes, String name, String defaultValue) { - Node node= attributes.getNamedItem(name); - return node == null ? defaultValue : node.getNodeValue(); - } - - private String translateString(String str, ResourceBundle bundle) { - if (bundle == null) - return str; - - int idx= str.indexOf('%'); - if (idx == -1) { - return str; - } - StringBuffer buf= new StringBuffer(); - int k= 0; - while (idx != -1) { - buf.append(str.substring(k, idx)); - for (k= idx + 1; k < str.length() && !Character.isWhitespace(str.charAt(k)); k++) { - // loop - } - String key= str.substring(idx + 1, k); - buf.append(getBundleString(key, bundle)); - idx= str.indexOf('%', k); - } - buf.append(str.substring(k)); - return buf.toString(); - } - - private String getBundleString(String key, ResourceBundle bundle) { - if (bundle != null) { - try { - return bundle.getString(key); - } catch (MissingResourceException e) { - return '!' + key + '!'; - } - } else - return TemplatePersistenceMessages.getString(key); // default messages - } -} - diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplateStore.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplateStore.java deleted file mode 100644 index fdfde5a2646..00000000000 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplateStore.java +++ /dev/null @@ -1,344 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jface.text.templates.persistence; - -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.jface.preference.IPreferenceStore; - -import org.eclipse.jface.text.Assert; -import org.eclipse.jface.text.templates.ContextTypeRegistry; -import org.eclipse.jface.text.templates.Template; -import org.eclipse.jface.text.templates.TemplateException; - -/** - * A collection of templates. Clients may instantiate this class. - * - * @since 3.0 - */ -public class TemplateStore { - /** The stored templates. */ - private final List fTemplates= new ArrayList(); - /** The preference store. */ - private IPreferenceStore fPreferenceStore; - /** - * The key into <code>fPreferenceStore</code> the value of which holds custom templates - * encoded as XML. - */ - private String fKey; - /** - * The context type registry, or <code>null</code> if all templates regardless - * of context type should be loaded. - */ - private ContextTypeRegistry fRegistry; - - - /** - * Creates a new template store. - * - * @param store the preference store in which to store custom templates - * under <code>key</code> - * @param key the key into <code>store</code> where to store custom - * templates - */ - public TemplateStore(IPreferenceStore store, String key) { - Assert.isNotNull(store); - Assert.isNotNull(key); - fPreferenceStore= store; - fKey= key; - } - - /** - * Creates a new template store with a context type registry. Only templates - * that specify a context type contained in the registry will be loaded by - * this store if the registry is not <code>null</code>. - * - * @param registry a context type registry, or <code>null</code> if all - * templates should be loaded - * @param store the preference store in which to store custom templates - * under <code>key</code> - * @param key the key into <code>store</code> where to store custom - * templates - */ - public TemplateStore(ContextTypeRegistry registry, IPreferenceStore store, String key) { - this(store, key); - fRegistry= registry; - } - - /** - * Loads the templates from contributions and preferences. - * - * @throws IOException if loading fails. - */ - public void load() throws IOException { - fTemplates.clear(); - loadContributedTemplates(); - loadCustomTemplates(); - } - - /** - * Hook method to load contributed templates. Contributed templates are superseded - * by customized versions of user added templates stored in the preferences. - * <p> - * The default implementation does nothing.</p> - * - * @throws IOException if loading fails - */ - protected void loadContributedTemplates() throws IOException { - } - - /** - * Adds a template to the internal store. The added templates must have - * a unique id. - * - * @param data the template data to add - */ - protected void internalAdd(TemplatePersistenceData data) { - if (!data.isCustom()) { - // check if the added template is not a duplicate id - String id= data.getId(); - for (Iterator it= fTemplates.iterator(); it.hasNext();) { - TemplatePersistenceData d2= (TemplatePersistenceData) it.next(); - if (d2.getId() != null && d2.getId().equals(id)) - return; - } - fTemplates.add(data); - } - } - - /** - * Saves the templates to the preferences. - * - * @throws IOException if the templates cannot be written - */ - public void save() throws IOException { - ArrayList custom= new ArrayList(); - for (Iterator it= fTemplates.iterator(); it.hasNext();) { - TemplatePersistenceData data= (TemplatePersistenceData) it.next(); - if (data.isCustom() && !(data.isUserAdded() && data.isDeleted())) // don't save deleted user-added templates - custom.add(data); - } - - StringWriter output= new StringWriter(); - TemplateReaderWriter writer= new TemplateReaderWriter(); - writer.save((TemplatePersistenceData[]) custom.toArray(new TemplatePersistenceData[custom.size()]), output); - - fPreferenceStore.setValue(fKey, output.toString()); - } - - /** - * Adds a template encapsulated in its persistent form. - * - * @param data the template to add - */ - public void add(TemplatePersistenceData data) { - - if (!validateTemplate(data.getTemplate())) - return; - - if (data.isUserAdded()) { - fTemplates.add(data); - } else { - for (Iterator it= fTemplates.iterator(); it.hasNext();) { - TemplatePersistenceData d2= (TemplatePersistenceData) it.next(); - if (d2.getId() != null && d2.getId().equals(data.getId())) { - d2.setTemplate(data.getTemplate()); - d2.setDeleted(data.isDeleted()); - d2.setEnabled(data.isEnabled()); - return; - } - } - - // add an id which is not contributed as add-on - if (data.getTemplate() != null) { - TemplatePersistenceData newData= new TemplatePersistenceData(data.getTemplate(), data.isEnabled()); - fTemplates.add(newData); - } - } - } - - /** - * Removes a template from the store. - * - * @param data the template to remove - */ - public void delete(TemplatePersistenceData data) { - if (data.isUserAdded()) - fTemplates.remove(data); - else - data.setDeleted(true); - } - - /** - * Restores all contributed templates that have been deleted. - */ - public void restoreDeleted() { - for (Iterator it= fTemplates.iterator(); it.hasNext();) { - TemplatePersistenceData data= (TemplatePersistenceData) it.next(); - if (data.isDeleted()) - data.setDeleted(false); - } - } - - /** - * Deletes all user-added templates and reverts all contributed templates. - */ - public void restoreDefaults() { - for (Iterator it= fTemplates.iterator(); it.hasNext();) { - TemplatePersistenceData data= (TemplatePersistenceData) it.next(); - if (data.isUserAdded()) - it.remove(); - else - data.revert(); - } - } - - /** - * Returns all enabled templates. - * - * @return all enabled templates - */ - public Template[] getTemplates() { - return getTemplates(null); - } - - /** - * Returns all enabled templates for the given context type. - * - * @param contextTypeId the id of the context type of the requested templates, or <code>null</code> if all templates should be returned - * @return all enabled templates for the given context type - */ - public Template[] getTemplates(String contextTypeId) { - List templates= new ArrayList(); - for (Iterator it= fTemplates.iterator(); it.hasNext();) { - TemplatePersistenceData data= (TemplatePersistenceData) it.next(); - if (data.isEnabled() && !data.isDeleted() && (contextTypeId == null || contextTypeId.equals(data.getTemplate().getContextTypeId()))) - templates.add(data.getTemplate()); - } - - return (Template[]) templates.toArray(new Template[templates.size()]); - } - - /** - * Returns the first enabled template that matches the name. - * - * @param name the name of the template searched for - * @return the first enabled template that matches both name and context type id, or <code>null</code> if none is found - */ - public Template findTemplate(String name) { - return findTemplate(name, null); - } - - /** - * Returns the first enabled template that matches both name and context type id. - * - * @param name the name of the template searched for - * @param contextTypeId the context type id to clip unwanted templates, or <code>null</code> if any context type is ok - * @return the first enabled template that matches both name and context type id, or <code>null</code> if none is found - */ - public Template findTemplate(String name, String contextTypeId) { - Assert.isNotNull(name); - - for (Iterator it= fTemplates.iterator(); it.hasNext();) { - TemplatePersistenceData data= (TemplatePersistenceData) it.next(); - Template template= data.getTemplate(); - if (data.isEnabled() && !data.isDeleted() - && (contextTypeId == null || contextTypeId.equals(template.getContextTypeId())) - && name.equals(template.getName())) - return template; - } - - return null; - } - - /** - * Returns all template datas. - * - * @param includeDeleted whether to include deleted datas - * @return all template datas, whether enabled or not - */ - public TemplatePersistenceData[] getTemplateData(boolean includeDeleted) { - List datas= new ArrayList(); - for (Iterator it= fTemplates.iterator(); it.hasNext();) { - TemplatePersistenceData data= (TemplatePersistenceData) it.next(); - if (includeDeleted || !data.isDeleted()) - datas.add(data); - } - - return (TemplatePersistenceData[]) datas.toArray(new TemplatePersistenceData[datas.size()]); - } - - private void loadCustomTemplates() throws IOException { - String pref= fPreferenceStore.getString(fKey); - if (pref != null && pref.trim().length() > 0) { - Reader input= new StringReader(pref); - TemplateReaderWriter reader= new TemplateReaderWriter(); - TemplatePersistenceData[] datas= reader.read(input); - for (int i= 0; i < datas.length; i++) { - TemplatePersistenceData data= datas[i]; - add(data); - } - } - } - - /** - * Validates a template against the context type registered in the context - * type registry. Returns always <code>true</code> if no registry is - * present. - * - * @param template the template to validate - * @return <code>true</code> if validation is successful or no context - * type registry is specified, <code>false</code> if validation - * fails - */ - private boolean validateTemplate(Template template) { - String contextTypeId= template.getContextTypeId(); - if (contextExists(contextTypeId)) { - if (fRegistry != null) - try { - fRegistry.getContextType(contextTypeId).validate(template.getPattern()); - } catch (TemplateException e) { - return false; - } - return true; - } else - return false; - } - - /** - * Returns <code>true</code> if a context type id specifies a valid context type - * or if no context type registry is present. - * - * @param contextTypeId the context type id to look for - * @return <code>true</code> if the context type specified by the id - * is present in the context type registry, or if no registry is - * specified - */ - private boolean contextExists(String contextTypeId) { - return contextTypeId != null && (fRegistry == null || fRegistry.getContextType(contextTypeId) != null); - } - - /** - * Returns the registry. - * - * @return Returns the registry - */ - protected final ContextTypeRegistry getRegistry() { - return fRegistry; - } -} - diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/package.html b/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/package.html deleted file mode 100644 index e70145a0f58..00000000000 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/package.html +++ /dev/null @@ -1,113 +0,0 @@ -<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta content="text/html; charset=iso-8859-1" - http-equiv="Content-Type"> - <meta content="IBM" name="Author"> - <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" - name="GENERATOR"> - <title>Templates</title> - <meta content="Template Infrastructure package description" - name="description"> -</head> -<body> -Application programming interfaces for interaction -with the Eclipse Java User Interface text support. -<h2>Templates<br> -</h2> -<h3>packages</h3> -<ul> - <li style="font-weight: bold;"><big><span - style="font-family: monospace;">org.eclipse.jface.text.templates</span></big></li> - <li style="font-weight: bold;"><big><span - style="font-family: monospace;">org.eclipse.ui.workbench.texteditor.templates</span><br> - <span style="font-family: monospace;"></span></big></li> - <li><big><span style="font-family: monospace; font-weight: bold;">org.eclipse.ui.editors.templates</span></big><br> - <span style="font-family: monospace;"></span></li> -</ul> -<h3><code></code></h3> -Templates are shortcuts for frequently used fragments of text such as -code patterns or complex text entities. They may contain variables -which are only resolved at the time when the template is inserted -within a context. Together with linked mode, inserting a template can -create a on-the-fly edit mask within a text viewer.<br> -<br> -Templates are specified as text, variables are defined using the <span - style="font-family: monospace;">${variable}</span> notation known from -Ant, for example. The following snippet shows an example template for -an instance check in Java:<br> -<pre>if (${name} instanceof ${type}) {<br> ${type} ${new_name} = (${type})${name};<br> ${cursor}<br>}<br></pre> -In this template, the variables (<span style="font-family: monospace;">name, -type, ...</span><span style="font-family: sans-serif;">) are resolved -when inserted into java source and changing one variable instance will -also change the other. When leaving linked mode, the caret is placed at -the </span><span style="font-family: monospace;">cursor</span><span - style="font-family: sans-serif;"> variable.<br> -<br> -Template functionality can be added to a custom text editor by offering -</span><span style="font-family: monospace;">TemplateProposal</span><span - style="font-family: sans-serif;">s as content assist choices, which is -simplified by using a </span><span style="font-family: sans-serif;"><span - style="font-family: sans-serif;">subclass of </span></span><span - style="font-family: monospace;">TemplateCompletionProcessor</span><span - style="font-family: sans-serif;">. User template management can be -offered by including a </span><span style="font-family: monospace;">TemplatePreferencePage</span><span - style="font-family: sans-serif;"> which uses a </span><span - style="font-family: monospace;">TemplateStore</span><span - style="font-family: sans-serif;"> and <span - style="font-family: monospace;">ContextTypeRegistry</span> as the -underlying model to store templates. The <span - style="font-family: monospace;">org.eclipse.ui.editors.templates</span> -extension point can be used to allow other plug-ins to contribute -templates to an editor. This is accomplished by using the <span - style="font-family: monospace;">ContributionTemplateStore</span> and <span - style="font-family: monospace;">ContributionContextTypeRegistry</span> -subclasses of the above types.<br> -<br> -Template variables are resolved by a <span - style="font-family: monospace;">TemplateVariableResolver.</span> <span - style="font-family: monospace;">GlobalTemplateVariables</span> offers -some default variables such as date, user, and selection, but advanced -features such as resolving to language constructs can be performed in -subclasses.<br> -</span> -<h4>Classes</h4> -<ul> - <li><span style="font-family: monospace;">Template</span><span - style="font-family: sans-serif;"> a template consists of name, context -type identifier, and a pattern.</span></li> - <li><span style="font-family: sans-serif;"><span - style="font-family: monospace;">TemplateTranslator</span> and <span - style="font-family: monospace;">TemplateBuffer</span> are used to -parse the template grammar and don't need to be used usually.</span></li> - <li><span style="font-family: sans-serif;">A <span - style="font-family: monospace;">TemplateProposal </span>can be -offered in content assist, possibly created by a subclass of <span - style="font-family: monospace;">TemplateCompletionProcessor.</span></span></li> - <li><span style="font-family: sans-serif;"><span - style="font-family: monospace;">TemplateStore</span> and <span - style="font-family: monospace;">ContextTypeRegistry</span> manage a -set of templates within a plug-in and offer ways to store them in the -preferences or externally in XML streams via a <span - style="font-family: monospace;">TemplateReaderWriter</span>.<br> - </span></li> - <li><span style="font-family: sans-serif;"><span - style="font-family: monospace;">ContributionTemplateStore</span> and <span - style="font-family: monospace;">ContributionContextTypeRegistry</span> -add awareness for the </span><span style="font-family: sans-serif;"><span - style="font-family: sans-serif;"> <span - style="font-family: monospace;">org.eclipse.ui.editors.templates</span> -extension point.</span></span></li> - <li style="font-family: monospace;"><span - style="font-family: sans-serif;"><span style="font-family: sans-serif;"><span - style="font-family: monospace;">TemplatePreferencePage</span> allows -the user to access the templates within a <span - style="font-family: monospace;">TemplateStore</span>.</span></span></li> -</ul> -<ul> -</ul> -<h4>Example</h4> -<pre><span style="font-family: sans-serif;">See the Template Editor Example in the <span - style="font-weight: bold;">org.eclipse.ui.examples.javaeditor</span> project.<br></span></pre> -</body> -</html> |