package org.atdl4j.ui.swt.app.impl; import org.atdl4j.config.Atdl4jOptions; import org.atdl4j.ui.app.impl.AbstractStrategyDescriptionPanel; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Text; /** * Represents the SWT-specific Strategy Description GUI component. * * @author Scott Atwell * @version 1.0, Mar 1, 2010 */ public class SWTStrategyDescriptionPanel extends AbstractStrategyDescriptionPanel { private Composite composite; private Text strategyDescription; private int DEFAULT_COMPOSITE_HEIGHT_HINT = 45; private int DEFAULT_STRATEGY_DESCRIPTION_HEIGHT_HINT = 35; public Object buildStrategyDescriptionPanel(Object parentOrShell, Atdl4jOptions atdl4jOptions) { return buildStrategyDescriptionPanel( (Composite) parentOrShell, atdl4jOptions ); } public Composite buildStrategyDescriptionPanel(Composite aParentComposite, Atdl4jOptions atdl4jOptions) { setAtdl4jOptions( atdl4jOptions ); composite = new SWTVisibleGroup(aParentComposite, SWT.NONE); ((Group) composite).setText("Strategy Description"); composite.setLayout(new GridLayout(1, false)); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); strategyDescription = new Text(composite, SWT.WRAP | SWT.BORDER | SWT.V_SCROLL ); strategyDescription.setBackground(composite.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); strategyDescription.setForeground(composite.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND)); GridData descData = new GridData(SWT.FILL, SWT.FILL, true, false); descData.heightHint = DEFAULT_STRATEGY_DESCRIPTION_HEIGHT_HINT; strategyDescription.setLayoutData(descData); return composite; } /* (non-Javadoc) * @see org.atdl4j.ui.app.AbstractStrategyDescriptionPanel#setStrategyDescriptionText(java.lang.String) */ protected void setStrategyDescriptionText(String aText) { if ( strategyDescription != null ) { strategyDescription.setText( aText ); } } /* (non-Javadoc) * @see org.atdl4j.ui.app.StrategyDescriptionPanel#setVisible(boolean) */ @Override public void setVisible(boolean aVisible) { // -- Note that SWTVisibleGroup vs. Group as this handles setVisible() better (without consuming vertical space in GridLayout) -- if ( ( composite != null ) && ( ! composite.isDisposed() ) ) { composite.setVisible( aVisible ); } } }