/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.utils.common.configuration;
import java.util.Arrays;
import java.util.List;
import org.eclipse.core.runtime.Platform;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
/**
* A {@link Composite} displaying editors for the immediate properties of a configuration based on
* its {@link IConfigurationSource}.
*
* @author Christian Weiss
*/
public class BeanConfigurationWidget extends BeanPropertyWidget {
/** The {@link IConfigurationSource} providing the property information. */
private IConfigurationSource configurationSource;
/**
* Instantiates a new bean configuration widget.
*
* @param parent the parent composite
* @param style the style
*/
public BeanConfigurationWidget(final Composite parent, final int style) {
super(parent, style);
}
/**
* {@inheritDoc}
*
* @see de.rcenvironment.core.gui.utils.common.configuration.BeanPropertyWidget#setObject(java.lang.Object)
*/
@Override
public void setObject(final Object object, final boolean lookupPropertySource) {
if (lookupPropertySource) {
IConfigurationSource newConfigurationSource =
(IConfigurationSource) AdapterManager.getInstance().getAdapter(object, IConfigurationSource.class);
if (newConfigurationSource == null) {
newConfigurationSource = (IConfigurationSource) Platform.getAdapterManager().getAdapter(object, IConfigurationSource.class);
}
this.configurationSource = newConfigurationSource;
setPropertySource(newConfigurationSource);
}
createControls();
resetFocus();
}
/**
* {@inheritDoc}
*
* @see de.rcenvironment.core.gui.utils.common.configuration.BeanPropertyWidget#createControls()
*/
@Override
protected void createControls() {
final List<IPropertyDescriptor> descriptors = Arrays.asList(configurationSource.getConfigurationPropertyDescriptors());
// sort the properties according to their display name
sortPropertyDescriptors(descriptors);
for (final IPropertyDescriptor descriptor : descriptors) {
createControls(descriptor);
}
}
}