package org.atdl4j.ui.swing.widget;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
import org.atdl4j.ui.impl.AbstractAtdl4jWidget;
import org.atdl4j.ui.swing.SwingWidget;
/**
* Abstract class that represents a Parameter Swing Widget. Implements the FIX
* value getters's methods.
*/
public abstract class AbstractSwingWidget<E extends Comparable<?>>
extends AbstractAtdl4jWidget<E>
implements SwingWidget<E>
{
protected List< ? extends Component> brickComponents;
public void setVisible(boolean visible)
{
for ( Component control : getComponents() )
{
if (control != null) {
control.setVisible( visible );
}
}
}
public void setEnabled(boolean enabled)
{
for ( Component control : getComponents() )
{
if (control != null) {
control.setEnabled( enabled );
}
}
}
public boolean isVisible()
{
for ( Component control : getComponents() )
{
if ((control != null) && control.isVisible() )
{
return true;
}
}
return false;
}
public boolean isEnabled()
{
for ( Component control : getComponents() )
{
if ( (control != null) && control.isEnabled() )
{
return true;
}
}
return false;
}
public void setControlExcludingLabelEnabled(boolean enabled)
{
for ( Component control : getComponentsExcludingLabel() )
{
if (control != null) {
control.setEnabled( enabled );
}
}
}
public boolean isControlExcludingLabelEnabled()
{
for ( Component control : getComponentsExcludingLabel() )
{
if ( (control != null) && control.isEnabled() )
{
return true;
}
}
return false;
}
@Override
public List< ? extends Component> getBrickComponents() {
if (brickComponents == null)
{
brickComponents = createBrickComponents();
}
return brickComponents;
}
protected List< ? extends Component> createBrickComponents() {
return new ArrayList<Component>();
}
@Override
public void createWidget(JPanel parent) {
JPanel wrapper = new JPanel(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
parent.setLayout(new GridBagLayout());
List< ? extends Component> components = getBrickComponents();
boolean lastComponentUsesRemainingSpace = false;
if (components.size()>1)
{
lastComponentUsesRemainingSpace = true;
}
int componentCount = 0;
for (Component component : components) {
componentCount++;
if (componentCount == components.size() && lastComponentUsesRemainingSpace)
{
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.fill = GridBagConstraints.BOTH;
}
wrapper.add(component, gc);
}
parent.add(wrapper);
}
}