package org.netbeans.gradle.project.api.config.ui;
import javax.annotation.Nonnull;
import org.netbeans.gradle.project.api.config.ActiveSettingsQuery;
/**
* @deprecated Use the {@link ProfileBasedSettingsPageFactory} based configuration instead:
* {@link ProfileEditorFactory}.
* <P>
* Defines the logic of editing multiple profiles on the associated settings
* panel.
*
* @see ProfileBasedConfigurations
* @see ProfileBasedProjectSettingsPageFactory
*/
@Deprecated
public interface ProfileValuesEditorFactory {
/**
* Prepares editing the selected profile. This method is called lazily
* when the user first selects a profile to edit. Note that this method
* should not update UI, the UI should only be updated when the
* {@link ProfileValuesEditor#displayValues() displayValues} method of the
* returned {@code ProfileValuesEditor} gets called.
* <P>
* To retrieve the key of the profile to be edited, you can use the following
* call: {@code profileQuery.currentProfileSettings().getValue().getKey()}.
* <P>
* <B>Note</B>: This method can be called from any thread.
*
* @param displayName the display name of the profile to be edited. This
* argument cannot be {@code null}.
* @param profileQuery the {@code ActiveSettingsQuery} with the profile
* to be edited as a {@link ActiveSettingsQuery#currentProfileSettings() selected profile}.
* The {@code currentProfileSettings} property of this {@code ActiveSettingsQuery}
* will never change. This argument cannot be {@code null}.
* @return the logic of editing and saving the properties in the selected
* profile. This method may never return {@code null}.
*/
@Nonnull
public ProfileValuesEditor startEditingProfile(@Nonnull String displayName, @Nonnull ActiveSettingsQuery profileQuery);
}