/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.uberfire.ext.preferences.client.base; import javax.enterprise.event.Observes; import org.uberfire.client.annotations.WorkbenchScreen; import org.uberfire.ext.preferences.client.event.HierarchyItemFormInitializationEvent; import org.uberfire.ext.preferences.client.event.PreferencesCentralPreSaveEvent; import org.uberfire.ext.preferences.client.event.PreferencesCentralUndoChangesEvent; import org.uberfire.lifecycle.OnStartup; import org.uberfire.mvp.PlaceRequest; /** * Class that all preference forms (defined by a {@link WorkbenchScreen} annotated with {@link PreferenceForm}) * must inherit, to be able to be initialized in a proper manner, which is receiving its preference object. * @param <T> Preference bean type the can be edited by this form. */ public abstract class BasePreferenceForm<T> { private String id; private T preference; /** * Method called when the form is opened, so it can receive the current persisted preference value. * @param preference */ public abstract void init(T preference); /** * Method called just before the preferences saving. */ public abstract void beforeSave(); /** * Method called when the "Undo" action is fired by the user. It is expected that the form undo any * unsaved changes in this method implementation. */ public abstract void onUndo(); @OnStartup public void onStartup(final PlaceRequest placeRequest) { id = placeRequest.getParameter("id", null); } public void hierarchyItemFormInitializationEvent(@Observes HierarchyItemFormInitializationEvent event) { if (preference == null && event.getItemId().equals(id)) { preference = event.getPreference(); init(preference); } } public void preSaveEvent(@Observes PreferencesCentralPreSaveEvent event) { beforeSave(); } public void undoChangesEvent(@Observes PreferencesCentralUndoChangesEvent event) { onUndo(); } public T getPreference() { return preference; } }