| /******************************************************************************* |
| * 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) { |
| } |
| } |