Search in sources :

Example 1 with ActivatedEvent

use of org.osate.ge.internal.ui.tools.ActivatedEvent in project osate2 by osate.

the class CreateFlowImplementationTool method activated.

@Override
public void activated(final ActivatedEvent ctx) {
    final UiService uiService = ctx.getUiService();
    try {
        ctx.getSelectedBoc().ifPresent(selectedBoc -> {
            final AadlModificationService aadlModService = ctx.getAadlModificatonService();
            final ColoringService coloringService = ctx.getColoringService();
            // Check for existing errors and warnings
            final Set<Diagnostic> diagnostics = ToolUtil.getAllReferencedPackageDiagnostics(selectedBoc);
            // Do not allow tool activation if there are errors in the models
            final Set<Diagnostic> errors = FlowDialogUtil.getErrors(diagnostics);
            if (!errors.isEmpty()) {
                Display.getDefault().asyncExec(() -> new FlowDialogUtil.ErrorDialog("The Create Flow Implementation", errors).open());
            } else {
                coloring = coloringService.adjustColors();
                // Create and update based on current selection
                createFlowImplDlg.create();
                if (segmentSelections.isEmpty() && modeFeatureSelections.isEmpty()) {
                    update(Collections.singletonList(selectedBoc), true);
                } else {
                    final Iterator<SegmentData> segmentIt = segmentSelections.iterator();
                    if (segmentIt.hasNext()) {
                        // Set color for flow spec
                        setColor(segmentIt.next().getBoc(), Color.ORANGE.darker());
                        // Set color for flow segments
                        while (segmentIt.hasNext()) {
                            setColor(segmentIt.next().getBoc(), Color.MAGENTA.darker());
                        }
                    }
                    // Set color for in mode and mode transitions
                    for (Iterator<BusinessObjectContext> modeFeatureIt = modeFeatureSelections.iterator(); modeFeatureIt.hasNext(); setColor(modeFeatureIt.next(), Color.MAGENTA.brighter())) {
                    }
                }
                if (createFlowImplDlg.open() == Window.OK && createFlowImplDlg != null) {
                    final BusinessObjectContext ownerBoc = createFlowImplDlg.getOwnerBoc().orElse(null);
                    // Create a new flow impl based on selections
                    final FlowImplementation flowImpl = createFlowImplDlg.createFlow(ownerBoc);
                    createFlowImplDlg.getFlowComponentImplementation(ownerBoc).ifPresent(ownerCi -> {
                        // Modifications to perform
                        final List<AadlModificationService.Modification<? extends NamedElement, ? extends NamedElement>> modifications = new ArrayList<>();
                        if (createFlowImplDlg.flowImplToEdit != null) {
                            // Editing existing flow impl
                            final FlowImplementation flowImplToEdit = createFlowImplDlg.flowImplToEdit;
                            // Copy owned property associations from old flow impl to new flow impl and remove old flow impl
                            modifications.add(Modification.create(flowImplToEdit, fi -> {
                                flowImpl.getOwnedPropertyAssociations().addAll(EcoreUtil.copyAll(fi.getOwnedPropertyAssociations()));
                                EcoreUtil.remove(fi);
                            }));
                        }
                        // Add new flow impl
                        modifications.add(Modification.create(ownerCi, ci -> {
                            ci.getOwnedFlowImplementations().add(flowImpl);
                            ci.setNoFlows(false);
                        }));
                        // Perform modifications
                        aadlModService.modify(modifications);
                    });
                }
            }
        });
    } finally {
        uiService.deactivateActiveTool();
    }
}
Also used : TableViewer(org.eclipse.jface.viewers.TableViewer) StyledText(org.eclipse.swt.custom.StyledText) Tool(org.osate.ge.internal.ui.tools.Tool) Modification(org.osate.ge.internal.services.AadlModificationService.Modification) IDialogConstants(org.eclipse.jface.dialogs.IDialogConstants) FlowKind(org.osate.aadl2.FlowKind) Point(org.eclipse.swt.graphics.Point) SegmentData(org.osate.ge.aadl2.ui.internal.tools.FlowDialogUtil.SegmentData) SelectionChangedEvent(org.osate.ge.internal.ui.tools.SelectionChangedEvent) Aadl2Factory(org.osate.aadl2.Aadl2Factory) BusinessObjectContext(org.osate.ge.BusinessObjectContext) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) FlowSpecification(org.osate.aadl2.FlowSpecification) Button(org.eclipse.swt.widgets.Button) Diagnostic(org.eclipse.emf.common.util.Diagnostic) Set(java.util.Set) Display(org.eclipse.swt.widgets.Display) UiService(org.osate.ge.internal.services.UiService) ContextHelpUtil(org.osate.ge.internal.ui.util.ContextHelpUtil) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) ReferenceService(org.osate.ge.internal.services.ReferenceService) List(java.util.List) Window(org.eclipse.jface.window.Window) UiUtil(org.osate.ge.internal.ui.util.UiUtil) DeactivatedEvent(org.osate.ge.internal.ui.tools.DeactivatedEvent) MenuItem(org.eclipse.swt.widgets.MenuItem) SWT(org.eclipse.swt.SWT) AadlModificationService(org.osate.ge.internal.services.AadlModificationService) Optional(java.util.Optional) Label(org.eclipse.swt.widgets.Label) FlowSegment(org.osate.aadl2.FlowSegment) DiagramElement(org.osate.ge.internal.diagram.runtime.DiagramElement) Feature(org.osate.aadl2.Feature) ComponentImplementation(org.osate.aadl2.ComponentImplementation) Function(java.util.function.Function) AgeAadlUtil(org.osate.ge.aadl2.internal.util.AgeAadlUtil) ArrayList(java.util.ArrayList) ColoringService(org.osate.ge.internal.services.ColoringService) InternalDiagramEditor(org.osate.ge.internal.ui.editor.InternalDiagramEditor) GridData(org.eclipse.swt.layout.GridData) FlowEnd(org.osate.aadl2.FlowEnd) Aadl2Package(org.osate.aadl2.Aadl2Package) Subcomponent(org.osate.aadl2.Subcomponent) SimpleEntry(java.util.AbstractMap.SimpleEntry) RowData(org.eclipse.swt.layout.RowData) Context(org.osate.aadl2.Context) Shell(org.eclipse.swt.widgets.Shell) Iterator(java.util.Iterator) Color(org.osate.ge.graphics.Color) ActivatedEvent(org.osate.ge.internal.ui.tools.ActivatedEvent) GridDataFactory(org.eclipse.jface.layout.GridDataFactory) EcoreUtil(org.eclipse.emf.ecore.util.EcoreUtil) StyleRange(org.eclipse.swt.custom.StyleRange) ModeFeature(org.osate.aadl2.ModeFeature) ToolUtil(org.osate.ge.internal.ui.tools.ToolUtil) Adapters(org.eclipse.core.runtime.Adapters) TitleAreaDialog(org.eclipse.jface.dialogs.TitleAreaDialog) FlowImplementation(org.osate.aadl2.FlowImplementation) FlowElement(org.osate.aadl2.FlowElement) AgeHandlerUtil(org.osate.ge.internal.ui.handlers.AgeHandlerUtil) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Menu(org.eclipse.swt.widgets.Menu) NamedElement(org.osate.aadl2.NamedElement) Collections(java.util.Collections) Control(org.eclipse.swt.widgets.Control) GridLayout(org.eclipse.swt.layout.GridLayout) Modification(org.osate.ge.internal.services.AadlModificationService.Modification) FlowImplementation(org.osate.aadl2.FlowImplementation) SegmentData(org.osate.ge.aadl2.ui.internal.tools.FlowDialogUtil.SegmentData) ArrayList(java.util.ArrayList) Diagnostic(org.eclipse.emf.common.util.Diagnostic) ColoringService(org.osate.ge.internal.services.ColoringService) UiService(org.osate.ge.internal.services.UiService) AadlModificationService(org.osate.ge.internal.services.AadlModificationService) BusinessObjectContext(org.osate.ge.BusinessObjectContext) NamedElement(org.osate.aadl2.NamedElement)

Aggregations

SimpleEntry (java.util.AbstractMap.SimpleEntry)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1 Iterator (java.util.Iterator)1 List (java.util.List)1 Objects (java.util.Objects)1 Optional (java.util.Optional)1 Set (java.util.Set)1 Function (java.util.function.Function)1 Collectors (java.util.stream.Collectors)1 Adapters (org.eclipse.core.runtime.Adapters)1 Diagnostic (org.eclipse.emf.common.util.Diagnostic)1 EcoreUtil (org.eclipse.emf.ecore.util.EcoreUtil)1 IDialogConstants (org.eclipse.jface.dialogs.IDialogConstants)1 TitleAreaDialog (org.eclipse.jface.dialogs.TitleAreaDialog)1 GridDataFactory (org.eclipse.jface.layout.GridDataFactory)1 TableViewer (org.eclipse.jface.viewers.TableViewer)1 Window (org.eclipse.jface.window.Window)1 SWT (org.eclipse.swt.SWT)1 StyleRange (org.eclipse.swt.custom.StyleRange)1