/******************************************************************************* * Copyright (c) 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.wst.sse.ui.preferences; import java.util.List; import org.eclipse.wst.sse.ui.internal.contentassist.CompletionProposalCategory; /** * <p>Implementers of the <code>org.eclipse.wst.sse.ui.completionProposalCategoriesConfiguration</code> * extension can implement this interface if their configuration should be user edible and thus * needs writing capabilities</p> * * <p><b>NOTE: </b>Implementers must have a 0 argument constructor so class can be instantiated by * extension.</p> * * @see ICompletionProposalCategoriesConfigurationReader */ public interface ICompletionProposalCategoriesConfigurationWriter extends ICompletionProposalCategoriesConfigurationReader { /** * <p>If a writer has a known associated properties page then that properties * page ID can be used so that error messages during the content assist process * can link to that preference page to allow the user to change the settings</p> * * @return <code>true</code> if this writer has a known associated properties * preference page, <code>false</code> otherwise */ boolean hasAssociatedPropertiesPage(); /** * @return If {@link #hasAssociatedPropertiesPage()} returns <code>true</code> then * this method must return a valid properties page ID where the user can edit the * content assist configuration, else it can return <code>null</code> */ String getPropertiesPageID(); /** * <p>Sets whether or not the given category should be displayed on its own content * assist page.<p> * * <p><b>NOTE: </b>This preference should <b>NOT</b> be saved permanently here, that action * should wait until {@link #saveConfiguration()} is called</p> * * @param categoryID the category that should either be displayed on its own content * assist page or not * @param shouldDisplay <code>true</code> if the given category should be displayed * on its own content assist page, <code>false</code> otherwise */ void setShouldDisplayOnDefaultPage(String categoryID, boolean shouldDisplay); /** * <p>Sets whether or not the given category should be displayed on the default content * assist page.<p> * * <p><b>NOTE: </b>This preference should <b>NOT</b> be saved permanently here, that action * should wait until {@link #saveConfiguration()} is called</p> * * @param categoryID the category that should either be displayed on the default content * assist page or not * @param shouldDisplay <code>true</code> if the given category should be displayed * on the default content assist page, <code>false</code> otherwise */ void setShouldDisplayOnOwnPage(String categoryID, boolean shouldDisplay); /** * <p>Sets the order in which the categories should be cycled when invoking content * assist multiple times. Event categories that are not activated to display on their * own content assist page can be listed here so that when activated to display on their * own page they have a rank. The entire order needs to be re-set each time one category * moves because the writer has no way of knowing how to move just one category in the order</p> * * <p><b>NOTE: </b>This preference should <b>NOT</b> be saved permanently here, that action * should wait until {@link #saveConfiguration()} is called</p> * * @param order <code>{@link List}<{@link String}></code> * <ul><li><b>values:</b> {@link CompletionProposalCategory} IDs</li></ul> */ void setPageOrder(List order); /** * <p>Sets the order in which the categories should be listed on the default page. * Event categories that are not activated to display on the default content assist * page can be listed here so that when activated to display on the default page * they have a rank. The entire order needs to be re-set each time one category * moves because the writer has no way of knowing how to move just one category in the order</p> * * <p><b>NOTE: </b>This preference should <b>NOT</b> be saved permanently here, that action * should wait until {@link #saveConfiguration()} is called</p> * * @param order <code>{@link List}<{@link String}></code> * <ul><li><b>values:</b> {@link CompletionProposalCategory} IDs</li></ul> */ void setDefaultPageOrder(List order); /** * <p>Should load the default settings from wherever they are being stored</p> */ void loadDefaults(); /** * <p>Should save the configuration permanently. Typically called after the user * changes some preferences using a preference page and then applies them, but if they do * not apply the changes then this function should not be called. This is the reason why the * various <code>set*</code> methods should not permanently save the configuration</p> * * @return <code>true</code> if the save was successful, <code>false</code> otherwise */ boolean saveConfiguration(); }