/**
* Copyright (C) 2015 Valkyrie RCP
*
* 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.valkyriercp.form.builder;
import org.springframework.util.Assert;
import org.valkyriercp.application.config.ApplicationConfig;
import org.valkyriercp.binding.form.FormModel;
import org.valkyriercp.util.HasInnerComponent;
import org.valkyriercp.util.ValkyrieRepository;
import javax.swing.*;
/**
* Abstract base for
* {@link FormComponentInterceptorFactory}
* with formModel handling.
*
* @author oliverh
*/
public abstract class AbstractFormComponentInterceptor implements FormComponentInterceptor {
private final FormModel formModel;
protected AbstractFormComponentInterceptor() {
formModel = null;
}
protected AbstractFormComponentInterceptor(FormModel formModel) {
Assert.notNull(formModel);
this.formModel = formModel;
}
protected FormModel getFormModel() {
return formModel;
}
public void processLabel(String propertyName, JComponent label) {
}
public void processComponent(String propertyName, JComponent component) {
}
/**
* Check for JScrollPane.
*
* @param component
* @return the component itself, or the inner component if it was a
* JScrollPane.
*/
protected JComponent getInnerComponent(JComponent component) {
if (component instanceof JScrollPane) {
return getInnerComponent((JComponent) ((JScrollPane) component).getViewport().getView());
} if (component instanceof HasInnerComponent) {
return getInnerComponent(((HasInnerComponent) component).getInnerComponent());
}
return component;
}
protected ApplicationConfig getApplicationConfig() {
return ValkyrieRepository.getInstance().getApplicationConfig();
}
}