All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.text.templates.TemplatePersistenceData Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2000, 2018 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.text.templates;

import java.util.Objects;
import java.util.UUID;

import org.eclipse.core.runtime.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.
 * 

* Clients may use this class, although this is not usually needed except when * implementing a custom template preference page or template store. This class * is not intended to be subclassed. *

* * @since 3.7 * @noextend This class is not intended to be subclassed by clients. */ 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; /* * Required to support equals() with deprecated type org.eclipse.jface.text.templates.persistence.TemplatePersistenceData. */ private final UUID uniqueIdForEquals = UUID.randomUUID(); /** * 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 id is not null, * 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 null 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; } /** * Returns the id of this template store, or null 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 true 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 true if the contained template is contributed but has been modified, false otherwise */ public boolean isModified() { return isCustom() && !isUserAdded(); } /** * Returns true if the contained template was added by a * user, i.e. does not reference a contributed template. * * @return true if the contained template was added by a user, false 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; } @Override public int hashCode() { return Objects.hash(uniqueIdForEquals); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof TemplatePersistenceData)) { return false; } TemplatePersistenceData other= (TemplatePersistenceData) obj; return Objects.equals(uniqueIdForEquals, other.getUniqueIdForEquals()); } /** * Required to support equals() with deprecated type org.eclipse.jface.text.templates.persistence.TemplatePersistenceData. * @return unique id to support {@link #equals(Object)} * @since 3.8 */ protected UUID getUniqueIdForEquals() { return uniqueIdForEquals; } /** * Required to support equals() with deprecated type org.eclipse.jface.text.templates.persistence.TemplatePersistenceData. * @param data non null * @return unique id to support {@link #equals(Object)} * @since 3.8 */ protected static final UUID getUniqueIdForEquals(TemplatePersistenceData data) { return data.getUniqueIdForEquals(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy