Search in sources :

Example 1 with TreeRoot

use of org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.TreeRoot in project InformationSystem by ObeoNetwork.

the class BindingTreeEditor method createPartControl.

/**
 * {@inheritDoc}
 *
 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
 */
@Override
public void createPartControl(Composite parent) {
    setUpUndoRedoActionHandler();
    sashForm = new SashForm(parent, SWT.VERTICAL);
    sashForm.setSashWidth(3);
    parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    editorManager = new BindingTreeEditorManager(getEditingDomain(), accessor);
    BindingTreeSemanticSupport treeSemanticSupport = new BindingTreeSemanticSupport(getBindingInfo(), editorManager);
    treeMapper = new BindingTreeMapper(sashForm, treeSemanticSupport);
    getSite().setSelectionProvider(treeMapper);
    treeMapper.getLeftTreeViewer().addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection() instanceof StructuredSelection) {
                StructuredSelection strSelection = (StructuredSelection) event.getSelection();
                @SuppressWarnings("unchecked") Collection<DBoundElement> selectedElements = (Collection<DBoundElement>) strSelection.toList();
                populateLTRMappingDetails(selectedElements);
            }
        }
    });
    treeMapper.getRightTreeViewer().addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection() instanceof StructuredSelection) {
                StructuredSelection strSelection = (StructuredSelection) event.getSelection();
                @SuppressWarnings("unchecked") Collection<DBoundElement> selectedElements = (Collection<DBoundElement>) strSelection.toList();
                populateRTLMappingDetails(selectedElements);
            }
        }
    });
    TreeDataProvider treeDataProvider = new TreeDataProvider(getBindingInfo());
    DBoundElement left = treeDataProvider.getLeftRoot();
    DBoundElement right = treeDataProvider.getRightRoot();
    List<DBindingEdge> edges = treeDataProvider.getEdges();
    treeMapper.setInput(new TreeRoot(left), new TreeRoot(right), edges);
    createBindingGroupDetails(sashForm);
    grpDetailsLTR.setText(getBindingDetailsLabel(left, right));
    grpDetailsRTL.setText(getBindingDetailsLabel(right, left));
    sashForm.setWeights(new int[] { 70, 30 });
    // Expand the first levels on the two trees
    treeMapper.getLeftTreeViewer().expandToLevel(2);
    treeMapper.getRightTreeViewer().expandToLevel(2);
    revealBoundElements(edges);
}
Also used : ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) BindingTreeMapper(org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.BindingTreeMapper) DBindingEdge(org.obeonetwork.dsl.environment.bindingdialect.DBindingEdge) DBoundElement(org.obeonetwork.dsl.environment.bindingdialect.DBoundElement) SashForm(org.eclipse.swt.custom.SashForm) TreeDataProvider(org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.provider.TreeDataProvider) GridData(org.eclipse.swt.layout.GridData) TreeRoot(org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.TreeRoot) Collection(java.util.Collection) BindingTreeSemanticSupport(org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.BindingTreeSemanticSupport)

Example 2 with TreeRoot

use of org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.TreeRoot in project InformationSystem by ObeoNetwork.

the class BindingTreeEditor method doRefresh.

public void doRefresh() {
    TreeDataProvider treeDataProvider = new TreeDataProvider(getBindingInfo());
    DBoundElement left = treeDataProvider.getLeftRoot();
    DBoundElement right = treeDataProvider.getRightRoot();
    List<DBindingEdge> edges = treeDataProvider.getEdges();
    treeMapper.setInput(new TreeRoot(left), new TreeRoot(right), edges);
    treeMapper.refresh();
    treeMapper.getLeftTreeViewer().expandToLevel(2);
    treeMapper.getRightTreeViewer().expandToLevel(2);
}
Also used : TreeDataProvider(org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.provider.TreeDataProvider) TreeRoot(org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.TreeRoot) DBindingEdge(org.obeonetwork.dsl.environment.bindingdialect.DBindingEdge) DBoundElement(org.obeonetwork.dsl.environment.bindingdialect.DBoundElement)

Example 3 with TreeRoot

use of org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.TreeRoot in project InformationSystem by ObeoNetwork.

the class BindingTreeEditor method autoBind.

private void autoBind() {
    TreeRoot leftRoot = (TreeRoot) treeMapper.getLeftTreeViewer().getInput();
    DBoundElement leftRootElement = leftRoot.getElement();
    TreeRoot rightRoot = (TreeRoot) treeMapper.getRightTreeViewer().getInput();
    DBoundElement rightRootElement = rightRoot.getElement();
    // collect candidates to auto bind
    List<DBoundElement> leftCandidates = new ArrayList<DBoundElement>();
    for (DBoundElement leftItem : leftRootElement.getChildren()) {
        if (leftItem.getEdgesAsLeft().isEmpty()) {
            leftCandidates.add(leftItem);
        }
    }
    List<DBoundElement> rightCandidates = new ArrayList<DBoundElement>();
    for (DBoundElement rightItem : rightRootElement.getChildren()) {
        if (rightItem.getEdgesAsRight().isEmpty()) {
            rightCandidates.add(rightItem);
        }
    }
    List<DBoundElement> leftElementsToBind = new ArrayList<DBoundElement>();
    List<DBoundElement> rightElementsToBind = new ArrayList<DBoundElement>();
    while (leftCandidates.isEmpty() == false && rightCandidates.isEmpty() == false) {
        DBoundElement left = leftCandidates.remove(0);
        for (DBoundElement right : rightCandidates) {
            if (getPropertyLabel(left.getTarget()).equals(getPropertyLabel(right.getTarget()))) {
                leftElementsToBind.add(left);
                rightElementsToBind.add(right);
                rightCandidates.remove(right);
                break;
            }
        }
    }
    if (leftElementsToBind.size() > 0) {
        editorManager.execute(new CreateMappingsCommand(getEditingDomain(), getBindingInfo(), leftElementsToBind, rightElementsToBind));
        doRefresh();
    }
}
Also used : CreateMappingsCommand(org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.commands.CreateMappingsCommand) TreeRoot(org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.TreeRoot) ArrayList(java.util.ArrayList) DBoundElement(org.obeonetwork.dsl.environment.bindingdialect.DBoundElement)

Aggregations

TreeRoot (org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.TreeRoot)3 DBoundElement (org.obeonetwork.dsl.environment.bindingdialect.DBoundElement)3 TreeDataProvider (org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.provider.TreeDataProvider)2 DBindingEdge (org.obeonetwork.dsl.environment.bindingdialect.DBindingEdge)2 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 ISelectionChangedListener (org.eclipse.jface.viewers.ISelectionChangedListener)1 SelectionChangedEvent (org.eclipse.jface.viewers.SelectionChangedEvent)1 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)1 SashForm (org.eclipse.swt.custom.SashForm)1 GridData (org.eclipse.swt.layout.GridData)1 BindingTreeMapper (org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.BindingTreeMapper)1 BindingTreeSemanticSupport (org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.BindingTreeSemanticSupport)1 CreateMappingsCommand (org.obeonetwork.dsl.environment.binding.dialect.ui.treemapper.commands.CreateMappingsCommand)1