Search in sources :

Example 6 with SegmentData

use of org.osate.ge.aadl2.ui.internal.tools.FlowDialogUtil.SegmentData in project osate2 by osate.

the class CreateEndToEndFlowSpecificationTool method setColor.

private void setColor(final Object o, final Color color) {
    if (o instanceof DiagramElement) {
        final DiagramElement de = (DiagramElement) o;
        coloring.setForeground(de, color);
    } else if (o instanceof SegmentData) {
        final SegmentData segmentData = (SegmentData) o;
        final BusinessObjectContext boc = segmentData.getBoc();
        // Do not remove color from duplicate segments
        if (color == null) {
            for (final SegmentData sd : segmentSelections) {
                if (sd.getBoc() == boc) {
                    return;
                }
            }
        }
        setColor(boc, color);
        segmentData.getOwnedSegments().forEach(de -> setColor(de, color));
    }
}
Also used : DiagramElement(org.osate.ge.internal.diagram.runtime.DiagramElement) Element(org.osate.aadl2.Element) TableViewer(org.eclipse.jface.viewers.TableViewer) Tool(org.osate.ge.internal.ui.tools.Tool) 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) BusinessObjectNode(org.osate.ge.internal.diagram.runtime.updating.BusinessObjectNode) BusinessObjectContext(org.osate.ge.BusinessObjectContext) Composite(org.eclipse.swt.widgets.Composite) KeyEvent(org.eclipse.swt.events.KeyEvent) KeyAdapter(org.eclipse.swt.events.KeyAdapter) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Text(org.eclipse.swt.widgets.Text) FlowSpecification(org.osate.aadl2.FlowSpecification) Button(org.eclipse.swt.widgets.Button) Diagnostic(org.eclipse.emf.common.util.Diagnostic) Set(java.util.Set) EObject(org.eclipse.emf.ecore.EObject) Connection(org.osate.aadl2.Connection) UUID(java.util.UUID) Display(org.eclipse.swt.widgets.Display) ArrayContentProvider(org.eclipse.jface.viewers.ArrayContentProvider) 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) EndToEndFlowElement(org.osate.aadl2.EndToEndFlowElement) 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) EndToEndFlowSegment(org.osate.aadl2.EndToEndFlowSegment) AadlModificationService(org.osate.ge.internal.services.AadlModificationService) Optional(java.util.Optional) AadlNamingUtil(org.osate.ge.aadl2.internal.AadlNamingUtil) Queue(java.util.Queue) Label(org.eclipse.swt.widgets.Label) EndToEndFlow(org.osate.aadl2.EndToEndFlow) DiagramElement(org.osate.ge.internal.diagram.runtime.DiagramElement) Namespace(org.osate.aadl2.Namespace) ComponentImplementation(org.osate.aadl2.ComponentImplementation) ComboViewer(org.eclipse.jface.viewers.ComboViewer) Function(java.util.function.Function) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) AgeAadlUtil(org.osate.ge.aadl2.internal.util.AgeAadlUtil) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) ArrayList(java.util.ArrayList) ColoringService(org.osate.ge.internal.services.ColoringService) DataSubcomponent(org.osate.aadl2.DataSubcomponent) InternalDiagramEditor(org.osate.ge.internal.ui.editor.InternalDiagramEditor) GridData(org.eclipse.swt.layout.GridData) Aadl2Package(org.osate.aadl2.Aadl2Package) Subcomponent(org.osate.aadl2.Subcomponent) Completeness(org.osate.ge.internal.diagram.runtime.updating.Completeness) 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) ModeFeature(org.osate.aadl2.ModeFeature) ToolUtil(org.osate.ge.internal.ui.tools.ToolUtil) Adapters(org.eclipse.core.runtime.Adapters) RowLayout(org.eclipse.swt.layout.RowLayout) TitleAreaDialog(org.eclipse.jface.dialogs.TitleAreaDialog) 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) LabelProvider(org.eclipse.jface.viewers.LabelProvider) Control(org.eclipse.swt.widgets.Control) GridLayout(org.eclipse.swt.layout.GridLayout) SegmentData(org.osate.ge.aadl2.ui.internal.tools.FlowDialogUtil.SegmentData) BusinessObjectContext(org.osate.ge.BusinessObjectContext)

Example 7 with SegmentData

use of org.osate.ge.aadl2.ui.internal.tools.FlowDialogUtil.SegmentData 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)

Example 8 with SegmentData

use of org.osate.ge.aadl2.ui.internal.tools.FlowDialogUtil.SegmentData in project osate2 by osate.

the class CreateFlowImplementationTool method setColor.

private void setColor(final Object o, final Color color) {
    if (o instanceof DiagramElement) {
        final DiagramElement de = (DiagramElement) o;
        coloring.setForeground(de, color);
    } else if (o instanceof SegmentData) {
        final SegmentData segmentData = (SegmentData) o;
        final BusinessObjectContext boc = segmentData.getBoc();
        // Do not remove color from duplicate segments
        if (color == null) {
            final Iterator<SegmentData> it = segmentSelections.iterator();
            if (it.hasNext()) {
                // Check if boc matches first segment to see if boc
                // should be orange to show the implementations flow specification
                final boolean isImplsFlowSpec = it.next().getBoc() == boc;
                // Keep color if it matches a segment
                while (it.hasNext()) {
                    if (it.next().getBoc() == boc) {
                        return;
                    }
                }
                if (isImplsFlowSpec) {
                    // Set orange to show flow specification
                    setColor(boc, Color.ORANGE.darker());
                    return;
                }
            }
        }
        setColor(boc, color);
    }
}
Also used : DiagramElement(org.osate.ge.internal.diagram.runtime.DiagramElement) SegmentData(org.osate.ge.aadl2.ui.internal.tools.FlowDialogUtil.SegmentData) Iterator(java.util.Iterator) BusinessObjectContext(org.osate.ge.BusinessObjectContext)

Aggregations

SegmentData (org.osate.ge.aadl2.ui.internal.tools.FlowDialogUtil.SegmentData)8 DiagramElement (org.osate.ge.internal.diagram.runtime.DiagramElement)7 ArrayList (java.util.ArrayList)4 Iterator (java.util.Iterator)4 Diagnostic (org.eclipse.emf.common.util.Diagnostic)4 BusinessObjectContext (org.osate.ge.BusinessObjectContext)4 Collections (java.util.Collections)3 List (java.util.List)3 Objects (java.util.Objects)3 Optional (java.util.Optional)3 Set (java.util.Set)3 Function (java.util.function.Function)3 Collectors (java.util.stream.Collectors)3 Adapters (org.eclipse.core.runtime.Adapters)3 EcoreUtil (org.eclipse.emf.ecore.util.EcoreUtil)3 IDialogConstants (org.eclipse.jface.dialogs.IDialogConstants)3 TitleAreaDialog (org.eclipse.jface.dialogs.TitleAreaDialog)3 GridDataFactory (org.eclipse.jface.layout.GridDataFactory)3 TableViewer (org.eclipse.jface.viewers.TableViewer)3 Window (org.eclipse.jface.window.Window)3