blob: 1b666efc6dc878151809f5f2d50e5073b4cc447f [file] [log] [blame]
/*
* Copyright (c) 2009, 2011 Mia-Software and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Gabriel Barbier (Mia-Software) - initial API and implementation
* Fabien Giquel (Mia-Software)
* Nicolas Bros (Mia-Software) - [Discovery] User feature : model opening from launch config
*/
package org.eclipse.modisco.infra.discovery.ui.internal.launch.parametersdisplay;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.modisco.infra.discovery.catalog.DirectionKind;
import org.eclipse.modisco.infra.discovery.ui.Messages;
import org.eclipse.modisco.infra.discovery.ui.internal.launch.data.DiscovererParameterDisplay;
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.Control;
import org.eclipse.swt.widgets.ExpandBar;
import org.eclipse.swt.widgets.ExpandItem;
import org.eclipse.swt.widgets.Group;
public class DiscovererParametersComposite extends Composite {
private static final class InnerParametersGroup {
private ParametersTableComposite parametersGroup = null;
private ExpandItem parametersItem = null;
InnerParametersGroup() {
// Empty
}
/**
* This method initializes inParametersGroup
*
*/
void createParametersGroup(final ExpandBar parametersBar,
final List<DiscovererParameterDisplay> discoveryParameters, final String message,
final boolean editable) {
this.parametersGroup = new ParametersTableComposite(parametersBar, SWT.NONE,
discoveryParameters, editable);
this.parametersItem = new ExpandItem(parametersBar, SWT.NONE, 0);
this.parametersItem.setText(message);
this.parametersItem.setHeight(this.parametersGroup
.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
this.parametersItem.setControl(this.parametersGroup);
this.parametersItem.setExpanded(!discoveryParameters.isEmpty());
}
void updateDisplayParameters(final List<DiscovererParameterDisplay> discoveryParameters) {
this.parametersGroup.updateDisplayParameters(discoveryParameters);
this.parametersItem.setHeight(this.parametersGroup
.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
if (discoveryParameters.size() > 0) {
this.parametersItem.setExpanded(true);
} else {
this.parametersItem.setExpanded(false);
}
}
public ParametersTableComposite getParametersGroup() {
return this.parametersGroup;
}
}
private Group discovererParametersGroup = null;
private InnerParametersGroup inParametersGroup = null;
private InnerParametersGroup inoutParametersGroup = null;
private InnerParametersGroup outParametersGroup = null;
private ExpandBar parametersBar = null;
private List<DiscovererParameterDisplay> discoveryParameters;
public DiscovererParametersComposite(final Composite parent, final int style) {
super(parent, style);
this.discoveryParameters = Collections.emptyList();
initialize();
}
private final void initialize() {
GridLayout gridLayout = new GridLayout();
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
GridData gridData = new GridData();
gridData.grabExcessHorizontalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
gridData.verticalAlignment = GridData.FILL;
gridData.grabExcessVerticalSpace = true;
setLayoutData(gridData);
setLayout(gridLayout);
createDiscovererParametersGroup();
}
/**
* This method initializes discovererParametersGroup
*
*/
private final void createDiscovererParametersGroup() {
GridData gridData1 = new GridData();
gridData1.grabExcessHorizontalSpace = true;
gridData1.horizontalAlignment = GridData.FILL;
gridData1.verticalAlignment = GridData.FILL;
gridData1.grabExcessVerticalSpace = true;
this.discovererParametersGroup = new Group(this, SWT.NONE);
this.discovererParametersGroup
.setText(Messages.DiscovererParametersComposite_DiscovererParams);
this.discovererParametersGroup.setLayoutData(gridData1);
this.parametersBar = new ExpandBar(this.discovererParametersGroup, SWT.V_SCROLL);
GridData gridData = new GridData();
gridData.grabExcessHorizontalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
gridData.verticalAlignment = GridData.FILL;
gridData.grabExcessVerticalSpace = true;
this.parametersBar.setLayoutData(gridData);
createOutParametersGroup();
createInoutParametersGroup();
createInParametersGroup();
// set tab order
this.parametersBar.setTabList(new Control[] { this.inParametersGroup.getParametersGroup(),
this.inoutParametersGroup.getParametersGroup(), this.outParametersGroup.getParametersGroup() });
this.discovererParametersGroup.setLayout(new GridLayout());
}
/**
* This method initializes inParametersGroup
*
*/
private final void createInParametersGroup() {
this.inParametersGroup = new InnerParametersGroup();
this.inParametersGroup.createParametersGroup(this.parametersBar,
getInDiscoveryParameters(), Messages.DiscovererParametersComposite_inParams, true);
}
private final List<DiscovererParameterDisplay> getInDiscoveryParameters() {
List<DiscovererParameterDisplay> inParameters = new ArrayList<DiscovererParameterDisplay>();
for (DiscovererParameterDisplay parameter : this.discoveryParameters) {
if (parameter.getParameterDescription().getDirection() == DirectionKind.IN) {
inParameters.add(parameter);
}
}
return inParameters;
}
/**
* This method initializes inoutParametersGroup
*
*/
private final void createInoutParametersGroup() {
this.inoutParametersGroup = new InnerParametersGroup();
this.inoutParametersGroup.createParametersGroup(this.parametersBar,
getInDiscoveryParameters(), Messages.DiscovererParametersComposite_inoutParams,
true);
}
private final List<DiscovererParameterDisplay> getInOutDiscoveryParameters() {
List<DiscovererParameterDisplay> inoutParameters = new ArrayList<DiscovererParameterDisplay>();
for (DiscovererParameterDisplay parameter : this.discoveryParameters) {
if (parameter.getParameterDescription().getDirection() == DirectionKind.INOUT) {
inoutParameters.add(parameter);
}
}
return inoutParameters;
}
/**
* This method initializes outParametersGroup
*
*/
private final void createOutParametersGroup() {
this.outParametersGroup = new InnerParametersGroup();
this.outParametersGroup
.createParametersGroup(this.parametersBar, getInDiscoveryParameters(),
Messages.DiscovererParametersComposite_outParams, false);
}
private final List<DiscovererParameterDisplay> getOutDiscoveryParameters() {
List<DiscovererParameterDisplay> outParameters = new ArrayList<DiscovererParameterDisplay>();
for (DiscovererParameterDisplay parameter : this.discoveryParameters) {
if (parameter.getParameterDescription().getDirection() == DirectionKind.OUT) {
outParameters.add(parameter);
}
}
return outParameters;
}
/**
* @param displayParameters
*/
public void updateDiscoveryParameters(final List<DiscovererParameterDisplay> displayParameters) {
this.discoveryParameters = displayParameters;
this.inParametersGroup.updateDisplayParameters(getInDiscoveryParameters());
this.inoutParametersGroup.updateDisplayParameters(getInOutDiscoveryParameters());
this.outParametersGroup.updateDisplayParameters(getOutDiscoveryParameters());
}
public ParametersTableComposite getInParametersGroup() {
return this.inParametersGroup.getParametersGroup();
}
public ParametersTableComposite getInoutParametersGroup() {
return this.inoutParametersGroup.getParametersGroup();
}
public ParametersTableComposite getOutParametersGroup() {
return this.outParametersGroup.getParametersGroup();
}
} // @jve:decl-index=0:visual-constraint="10,10"