blob: 1b311a08f2b4bf8f54731eab03e6992081abe202 [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 - initial API and implementation
* Regent L'Archeveque,
* Sebastien Gemme
*
* SPDX-License-Identifier: EPL-1.0
*******************************************************************************/
package org.eclipse.apogy.common.topology.ui.composites;
import org.eclipse.apogy.common.topology.Node;
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.swt.widgets.Label;
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 TopologyTreeEditingComposite extends Composite {
protected Node root;
protected TopologyTreeComposite topologyTreeComposite;
protected NodeOverviewComposite nodeOverviewComposite;
protected NodeDetailsComposite nodeDetailsComposite;
protected final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
public TopologyTreeEditingComposite(Composite parent, int style, boolean editingEnabled) {
super(parent, style);
setLayout(new GridLayout(1, true));
ScrolledForm scrldfrmDEM = this.formToolkit.createScrolledForm(this);
scrldfrmDEM.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
this.formToolkit.paintBordersFor(scrldfrmDEM);
{
TableWrapLayout tableWrapLayout = new TableWrapLayout();
tableWrapLayout.numColumns = 2;
tableWrapLayout.makeColumnsEqualWidth = true;
scrldfrmDEM.getBody().setLayout(tableWrapLayout);
}
Section sctnTopology = this.formToolkit.createSection(scrldfrmDEM.getBody(),
ExpandableComposite.EXPANDED | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
TableWrapData twd_sctnDemlist = new TableWrapData(TableWrapData.FILL, TableWrapData.TOP, 3, 1);
twd_sctnDemlist.valign = TableWrapData.FILL;
twd_sctnDemlist.grabVertical = true;
twd_sctnDemlist.grabHorizontal = true;
sctnTopology.setLayoutData(twd_sctnDemlist);
this.formToolkit.paintBordersFor(sctnTopology);
sctnTopology.setText("Topology");
this.topologyTreeComposite = new TopologyTreeComposite(sctnTopology, SWT.NONE, editingEnabled) {
@Override
protected void newSelection(Node node) {
TopologyTreeEditingComposite.this.nodeOverviewComposite.setNode(node);
TopologyTreeEditingComposite.this.nodeDetailsComposite.setNode(node);
nodeSelected(node);
}
};
GridData gd_topologyTreeComposite = new GridData(SWT.FILL, SWT.FILL, true, true);
this.topologyTreeComposite.setLayoutData(gd_topologyTreeComposite);
this.formToolkit.adapt(this.topologyTreeComposite);
this.formToolkit.paintBordersFor(this.topologyTreeComposite);
sctnTopology.setClient(this.topologyTreeComposite);
Section sctnDemoverview = this.formToolkit.createSection(scrldfrmDEM.getBody(),
ExpandableComposite.EXPANDED | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
this.formToolkit.paintBordersFor(sctnDemoverview);
sctnDemoverview.setText("Node Overview");
this.nodeOverviewComposite = new NodeOverviewComposite(sctnDemoverview, SWT.NONE);
this.formToolkit.adapt(this.nodeOverviewComposite);
this.formToolkit.paintBordersFor(this.nodeOverviewComposite);
sctnDemoverview.setClient(this.nodeOverviewComposite);
Section sctnDemdetails = this.formToolkit.createSection(scrldfrmDEM.getBody(),
ExpandableComposite.EXPANDED | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
this.formToolkit.paintBordersFor(sctnDemdetails);
sctnDemdetails.setText("Node Details");
this.nodeDetailsComposite = new NodeDetailsComposite(sctnDemdetails, SWT.NONE);
this.formToolkit.adapt(this.nodeDetailsComposite);
this.formToolkit.paintBordersFor(this.nodeDetailsComposite);
sctnDemdetails.setClient(this.nodeDetailsComposite);
new Label(this, SWT.NONE);
}
public void selectNode(Node selectedNode) {
if (this.topologyTreeComposite != null && !this.topologyTreeComposite.isDisposed()) {
this.topologyTreeComposite.selectNode(selectedNode);
}
nodeSelected(selectedNode);
}
public Node getRoot() {
return this.root;
}
public void setRoot(Node newNode) {
this.root = newNode;
if (this.topologyTreeComposite != null && !this.topologyTreeComposite.isDisposed())
this.topologyTreeComposite.setRoot(newNode);
if (this.nodeDetailsComposite != null && !this.nodeDetailsComposite.isDisposed())
this.nodeDetailsComposite.setNode(newNode);
}
protected void nodeSelected(Node node) {
}
}