Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master wip duplicated merge from master #52

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
<extension
point="org.eclipse.ui.views">
<category
name="Editor Category"
name="Editor"
id="org.eclipse.xtext.example.domainmodel.embeddededitor">
</category>
<view
id="org.eclipse.xtext.example.domainmodel.embeddededitor.views.EmbeddedEditorView"
name="Textual Editor"
icon="icons/Scenario.gif"
icon="icons/capella_edit_16.gif"
class="org.polarsys.capella.scenario.editor.embeddededitor.views.EmbeddedEditorView"
category="org.eclipse.xtext.example.domainmodel.embeddededitor"
inject="true">
Expand All @@ -20,12 +20,13 @@
<extension
point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension
targetID="org.eclipse.jdt.ui.JavaPerspective">
targetID="capella.sirius.perspective">
<view
id="org.eclipse.xtext.example.domainmodel.embeddededitor.views.EmbeddedEditorView"
relative="org.eclipse.ui.views.ProblemView"
relationship="right"
ratio="0.5">
minimized="false"
relationship="stack"
relative="org.eclipse.ui.views.PropertySheet"
>
</view>
</perspectiveExtension>
</extension>
Expand All @@ -42,5 +43,25 @@
class="org.polarsys.capella.scenario.editor.embeddededitor.listener.EmbeddedEditorSessionListener">
</listener>
</extension>

<extension
point="org.eclipse.ui.bindings">
<key
contextId="org.eclipse.xtext.ui.embeddedTextEditorScope"
schemeId="org.polarsys.capella.core.defaultAcceleratorConfiguration"
sequence="F2"/>
<key
contextId="org.eclipse.xtext.ui.embeddedTextEditorScope"
schemeId="org.polarsys.capella.core.defaultAcceleratorConfiguration"
sequence="CTRL+HOME"/>
<key
contextId="org.eclipse.xtext.ui.embeddedTextEditorScope"
schemeId="org.polarsys.capella.core.defaultAcceleratorConfiguration"
sequence="CTRL+L"/>
<key
contextId="org.eclipse.xtext.ui.embeddedTextEditorScope"
schemeId="org.polarsys.capella.core.defaultAcceleratorConfiguration"
sequence="CTRL+SHIFT+Y"/>
</extension>

</plugin>
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@
import org.polarsys.capella.core.data.interaction.Scenario;
import org.polarsys.capella.scenario.editor.EmbeddedEditorInstance;
import org.polarsys.capella.scenario.editor.embeddededitor.commands.DiagramToXtextCommands;
import org.polarsys.capella.scenario.editor.embeddededitor.commands.HelperCommands;
import org.polarsys.capella.scenario.editor.embeddededitor.helper.XtextEditorHelper;
import org.polarsys.capella.scenario.editor.embeddededitor.views.EmbeddedEditorView;
import org.polarsys.capella.scenario.editor.helper.EmbeddedEditorInstanceHelper;

public class RefreshAction extends Action {
public static final String IMG_REFRESH = "icons/refresh.gif";
Expand All @@ -36,6 +38,11 @@ public void run() {
EmbeddedEditorView eeView = XtextEditorHelper.getActiveEmbeddedEditorView();
Scenario scenarioDiagram = EmbeddedEditorInstance.getAssociatedScenarioDiagram();

DiagramToXtextCommands.process(scenarioDiagram, eeView);
if (EmbeddedEditorInstanceHelper.isOpenedRepresentation()) {
DiagramToXtextCommands.process(scenarioDiagram, eeView);
} else {
HelperCommands.showDialogTextualEditor(HelperCommands.DIALOG_TITLE_UNABLE_TO_REFRESH,
HelperCommands.DIALOG_MESSAGE_ERROR_REFRESH + " The associated diagram is not opened!");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@
import org.eclipse.ui.PlatformUI;
import org.polarsys.capella.core.data.interaction.Scenario;
import org.polarsys.capella.scenario.editor.EmbeddedEditorInstance;
import org.polarsys.capella.scenario.editor.embeddededitor.commands.HelperCommands;
import org.polarsys.capella.scenario.editor.embeddededitor.commands.XtextToDiagramCommands;
import org.polarsys.capella.scenario.editor.embeddededitor.helper.XtextEditorHelper;
import org.polarsys.capella.scenario.editor.embeddededitor.views.EmbeddedEditorView;
import org.polarsys.capella.scenario.editor.helper.EmbeddedEditorInstanceHelper;

public class SaveAction extends Action {
public SaveAction() {
Expand All @@ -33,6 +35,11 @@ public void run() {
EmbeddedEditorView eeView = XtextEditorHelper.getActiveEmbeddedEditorView();
Scenario scenarioDiagram = EmbeddedEditorInstance.getAssociatedScenarioDiagram();

XtextToDiagramCommands.process(scenarioDiagram, eeView);
if (EmbeddedEditorInstanceHelper.isOpenedRepresentation()) {
XtextToDiagramCommands.process(scenarioDiagram, eeView);
} else {
HelperCommands.showDialogTextualEditor(HelperCommands.DIALOG_TITLE_UNABLE_TO_SAVE,
HelperCommands.DIALOG_MESSAGE_ERROR_SAVE + " The associated diagram is not opened!");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,14 @@ public class DiagramToXtextCommands {
* @return
*/
public static void process(Scenario scenario, EmbeddedEditorView embeddedEditorViewPart) {
if (embeddedEditorViewPart != null) {
if (scenario != null && embeddedEditorViewPart != null) {
TextualScenarioProvider textualScenarioProvider = embeddedEditorViewPart.getProvider();
XtextResource resource = textualScenarioProvider.getResource();
EList<EObject> content = resource.getContents();

TextualScenarioFactory factory = new TextualScenarioFactoryImpl();
Model domainModel = HelperCommands.getModel(embeddedEditorViewPart);
if (domainModel != null && scenario != null) {
if (domainModel != null) {
HelperCommands.clearModel(domainModel);

// Generate Participants
Expand All @@ -95,18 +95,18 @@ public static void process(Scenario scenario, EmbeddedEditorView embeddedEditorV
String serialized = ((XtextResource) domainModel.eResource()).getSerializer().serialize(domainModel);
EmbeddedEditorInstanceHelper.updateModel(serialized);
} catch (Exception e) {
showDialogUnableToRefresh();
System.err.println("Error refreshing diagram to Textual Editor");
HelperCommands.showDialogTextualEditor(HelperCommands.DIALOG_TITLE_UNABLE_TO_REFRESH,
HelperCommands.DIALOG_MESSAGE_ERROR_REFRESH);
}
} else {
showDialogUnableToRefresh();
HelperCommands.showDialogTextualEditor(HelperCommands.DIALOG_TITLE_UNABLE_TO_REFRESH,
HelperCommands.DIALOG_MESSAGE_ERROR_REFRESH);
}
} else {
HelperCommands.showDialogTextualEditor(HelperCommands.DIALOG_TITLE_UNABLE_TO_REFRESH,
HelperCommands.DIALOG_MESSAGE_ERROR_REFRESH + " Unknown associated scenario!");
}
}

private static void showDialogUnableToRefresh() {
MessageDialog.openError(Display.getCurrent().getActiveShell(), "Unable to refresh", "Error on refreshing data to Textual Editor");
}

/**
* generate the participants objects (actors, functions, components etc) that will be written in the xtext scenario
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package org.polarsys.capella.scenario.editor.embeddededitor.commands;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.validation.CheckMode;
import org.eclipse.xtext.validation.IResourceValidator;
Expand All @@ -17,6 +21,11 @@
import org.polarsys.capella.scenario.editor.helper.EmbeddedEditorInstanceHelper;

public class HelperCommands {
public static final String DIALOG_TITLE_UNABLE_TO_REFRESH = "Unable to refresh";
public static final String DIALOG_MESSAGE_ERROR_REFRESH = "Error on refreshing data to Textual Editor!";
public static final String DIALOG_TITLE_UNABLE_TO_SAVE = "Unable to save";
public static final String DIALOG_MESSAGE_ERROR_SAVE = "Error on saving data to diagram!";

public static String getExpressionText(InteractionOperand operand) {
Constraint guard = operand.getGuard();
if (guard != null) {
Expand All @@ -31,7 +40,23 @@ public static List<Issue> getValidationIsuesTextResource(XtextResource resource)
if(validator != null) {
return validator.validate(resource, CheckMode.ALL, null);
}
return null;
return new ArrayList<>();
}

public static String getFormattedIssues(List<Issue> issues) {
StringBuilder sb = new StringBuilder();
String newLine = "\r\n";
int maxDisplay = 3;
sb.append(newLine + newLine + "Found " + issues.size() + " issues:" + newLine);
for (int i = 0; i < maxDisplay && i < issues.size(); i++) {
Issue issue = issues.get(i);
sb.append(
issue.getMessage() + " (line : " + issue.getLineNumber() + " column : " + issue.getColumn() + ")" + newLine);
}
if (issues.size() > maxDisplay) {
sb.append(newLine + "... " + (issues.size() - maxDisplay) + " more!" + newLine);
}
return sb.toString();
}

/**
Expand Down Expand Up @@ -76,4 +101,7 @@ public static void clearModel(Model domainModel) {
}
}

public static void showDialogTextualEditor(String title, String message) {
MessageDialog.openError(Display.getCurrent().getActiveShell(), title, message);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,11 @@
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.sirius.diagram.DDiagram;
import org.eclipse.sirius.diagram.sequence.SequenceDDiagram;
import org.eclipse.sirius.diagram.sequence.business.internal.operation.SynchronizeGraphicalOrderingOperation;
import org.eclipse.sirius.diagram.sequence.business.internal.refresh.RefreshLayoutCommand;
import org.eclipse.sirius.viewpoint.description.AnnotationEntry;
import org.eclipse.swt.widgets.Display;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.validation.Issue;
import org.polarsys.capella.common.helpers.EObjectExt;
Expand Down Expand Up @@ -101,7 +99,7 @@ public static void process(Scenario scenario, EmbeddedEditorView embeddedEditorV
XtextResource resource = p.getResource();

List<Issue> issues = HelperCommands.getValidationIsuesTextResource(resource);
if (issues == null || issues.isEmpty()) {
if (issues.isEmpty()) {
EList<EObject> content = resource.getContents();
Model domainModel = (Model) content.get(0);

Expand All @@ -122,13 +120,12 @@ public static void process(Scenario scenario, EmbeddedEditorView embeddedEditorV
// Scenario scenarioDiagram = EmbeddedEditorInstance.getAssociatedScenarioDiagram();
// DiagramToXtextCommands.process(scenarioDiagram, eeView);
} else {
MessageDialog.openError(Display.getCurrent().getActiveShell(), "Invalid data",
"Please fix the errors in the textual editor! \n" + issues);
HelperCommands.showDialogTextualEditor("Invalid data", "Please fix the errors in the textual editor!" +
HelperCommands.getFormattedIssues(issues));
}
}
} else {
MessageDialog.openError(Display.getCurrent().getActiveShell(), "Unknowned scenario",
"The associated diagram scenario is unknown!");
HelperCommands.showDialogTextualEditor("Unknowned scenario", "The associated scenario diagram is unknown!");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,15 @@
import org.eclipse.sirius.business.api.session.Session;
import org.eclipse.sirius.business.api.session.SessionManagerListener;
import org.eclipse.sirius.diagram.DDiagram;
import org.eclipse.sirius.diagram.sequence.description.SequenceDiagramDescription;
import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor;
import org.eclipse.sirius.ui.business.api.dialect.DialectEditor;
import org.eclipse.sirius.viewpoint.DRepresentation;
import org.eclipse.sirius.viewpoint.DRepresentationDescriptor;
import org.eclipse.sirius.viewpoint.description.Viewpoint;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.navigator.CommonNavigator;
import org.eclipse.ui.part.ViewPart;
import org.polarsys.capella.core.data.interaction.Scenario;
import org.polarsys.capella.core.model.handler.helpers.CapellaAdapterHelper;
import org.polarsys.capella.scenario.editor.EmbeddedEditorInstance;
Expand Down Expand Up @@ -72,52 +70,45 @@ public static Object handleSelection(IWorkbenchPart part, ISelection selection)

protected static ISelectionListener createSelectionListener() {
return (part, selection) -> {
EmbeddedEditorView eeView = XtextEditorHelper.getActiveEmbeddedEditorView();
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (part instanceof DDiagramEditor) {

if (part instanceof IWorkbenchPart) {
Object newInput = handleSelection(part, selection);

/*
* when a new diagram of type scenario is opened, we use the class EmbeddedEditorInstance to save the current
* scenario and we update the content of the embedded xtext editor
*/
if (newInput instanceof DRepresentationDescriptor) {
DRepresentationDescriptor desc = (DRepresentationDescriptor) newInput;
if (desc.getTarget() instanceof Scenario) {
Scenario sc = (Scenario) desc.getTarget();
boolean toRefresh = false;
if (eeView == null) {
// Show it if not found.
try {
eeView = (EmbeddedEditorView) activePage.showView(EmbeddedEditorView.ID);
toRefresh = true;
} catch (PartInitException e) {
System.err.println("Cannot open Textual Editor View");
if (newInput instanceof DRepresentationDescriptor &&
((DRepresentationDescriptor) newInput).getDescription() instanceof SequenceDiagramDescription) {

DRepresentationDescriptor descriptor = (DRepresentationDescriptor) newInput;
if (descriptor.getTarget() instanceof Scenario) {

Scenario sc = (Scenario) descriptor.getTarget();
if (currentSelected == null || !newInput.equals(currentSelected)) {
EmbeddedEditorView eeView = XtextEditorHelper.getActiveEmbeddedEditorView();
DRepresentation representation = descriptor.getRepresentation();
if (eeView != null && representation instanceof DDiagram &&
(currentSelected == null || part instanceof DDiagramEditor)) {

// set the diagram
EmbeddedEditorInstance.setDDiagram((DDiagram)representation);

// refresh the text editor
DiagramToXtextCommands.process(sc, eeView); // update the embedded editor text view
eeView.refreshTitleBar(sc.getName());
currentSelected = newInput;
}
activePage.activate(eeView);
}

if (toRefresh || currentSelected == null || !newInput.equals(currentSelected)) {
// set the diagram
DialectEditor dEditor = (DialectEditor) part;
DDiagram diagram = (DDiagram) dEditor.getRepresentation();
EmbeddedEditorInstance.setDDiagram(diagram);

// refresh the text editor
DiagramToXtextCommands.process(sc, eeView); // update the embedded editor text view
eeView.refreshTitleBar(sc.getName());
}
currentSelected = newInput;
} else if (eeView != null && activePage != null) {
activePage.hideView(eeView);
}
} else {
currentSelected = null;
EmbeddedEditorInstance.setDDiagram(null);
}
} else if ((!(part instanceof CommonNavigator) && !(part instanceof ViewPart)) && eeView != null && activePage != null) {
activePage.hideView(eeView);
}
};
}

@Override
public void notifyAddSession(Session newSession) {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.internal.editors.text.EditorsPlugin;
import org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyTitle;
import org.eclipse.ui.part.ViewPart;
Expand All @@ -33,6 +35,7 @@
import org.polarsys.capella.scenario.editor.dsl.ui.internal.DslActivator;
import org.polarsys.capella.scenario.editor.dsl.provider.TextualScenarioProvider;
import org.polarsys.capella.scenario.editor.embeddededitor.actions.XtextEditorActionFactory;
import org.polarsys.capella.scenario.editor.helper.EmbeddedEditorInstanceHelper;

import com.google.inject.Injector;

Expand Down Expand Up @@ -122,4 +125,10 @@ private void makeActions() {
@Override
public void setFocus() {
}

@Override
public void init(IViewSite site) throws PartInitException {
super.init(site);
EmbeddedEditorInstanceHelper.setOpenedRepresentation();
}
}
Loading