blob: 411c68604128d277391d1c64a0aa464509ddfa87 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Pierre Allard,
* Regent L'Archeveque,
* Olivier L. Larouche - initial API and implementation
*
* SPDX-License-Identifier: EPL-1.0
*
*******************************************************************************/
package org.eclipse.apogy.core.invocator.ui.composites;
import org.eclipse.apogy.core.invocator.Type;
import org.eclipse.apogy.core.invocator.TypeMember;
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.Display;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
public class TypeMembersComposite extends Composite {
private Type type;
private final FormToolkit formToolkit = new FormToolkit(Display.getCurrent());
private final TypeMembersListComposite typeMembersListComposite;
private final TypeMemberOverviewComposite typeMemberOverviewComposite;
public TypeMembersComposite(Composite parent, int style) {
super(parent, style);
setLayout(new GridLayout(1, false));
ScrolledForm topScrolledForm = this.formToolkit.createScrolledForm(this);
topScrolledForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
topScrolledForm.setShowFocusedControl(true);
this.formToolkit.paintBordersFor(topScrolledForm);
topScrolledForm.setText(null);
{
TableWrapLayout tableWrapLayout = new TableWrapLayout();
tableWrapLayout.makeColumnsEqualWidth = true;
tableWrapLayout.numColumns = 1;
topScrolledForm.getBody().setLayout(tableWrapLayout);
}
// Member List
Section membersListSection = this.formToolkit.createSection(topScrolledForm.getBody(),
ExpandableComposite.EXPANDED | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
TableWrapData twd_sctnFeaturesList = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP, 1, 1);
twd_sctnFeaturesList.valign = TableWrapData.FILL;
twd_sctnFeaturesList.grabVertical = true;
twd_sctnFeaturesList.grabHorizontal = true;
membersListSection.setLayoutData(twd_sctnFeaturesList);
this.formToolkit.paintBordersFor(membersListSection);
membersListSection.setText("Members");
this.typeMembersListComposite = new TypeMembersListComposite(membersListSection, SWT.NONE) {
@Override
protected void newTypeMemberSelected(TypeMember selectedTypeMember) {
if (TypeMembersComposite.this.typeMemberOverviewComposite != null) {
TypeMembersComposite.this.typeMemberOverviewComposite.setTypeMember(selectedTypeMember);
}
}
};
this.formToolkit.adapt(this.typeMembersListComposite);
this.formToolkit.paintBordersFor(this.typeMembersListComposite);
membersListSection.setClient(this.typeMembersListComposite);
// Member Overview
Section memberOverviewSection = this.formToolkit.createSection(topScrolledForm.getBody(),
ExpandableComposite.EXPANDED | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
TableWrapData twd_memberOverviewSection = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP, 1, 1);
twd_memberOverviewSection.valign = TableWrapData.FILL;
twd_memberOverviewSection.grabVertical = true;
twd_memberOverviewSection.grabHorizontal = true;
memberOverviewSection.setLayoutData(twd_memberOverviewSection);
this.formToolkit.paintBordersFor(memberOverviewSection);
memberOverviewSection.setText("Member Overview");
this.typeMemberOverviewComposite = new TypeMemberOverviewComposite(memberOverviewSection, SWT.NONE);
this.formToolkit.adapt(this.typeMemberOverviewComposite);
this.formToolkit.paintBordersFor(this.typeMemberOverviewComposite);
memberOverviewSection.setClient(this.typeMemberOverviewComposite);
}
public Type getType() {
return this.type;
}
public void setType(Type newType) {
this.type = newType;
if (this.typeMembersListComposite != null && !this.typeMembersListComposite.isDisposed()) {
this.typeMembersListComposite.setType(newType);
}
if (this.typeMemberOverviewComposite != null && !this.typeMemberOverviewComposite.isDisposed()) {
if (newType != null && newType.getMembers().size() > 0) {
this.typeMemberOverviewComposite.setTypeMember(newType.getMembers().get(0));
} else {
this.typeMemberOverviewComposite.setTypeMember(null);
}
}
}
}