Skip to content

Commit 4f4250a

Browse files
committed
Add content assist proposals in the Melange editor for Ecore and DSA selection
1 parent 2aa3464 commit 4f4250a

3 files changed

Lines changed: 102 additions & 0 deletions

File tree

java_execution/java_xdsml/plugins/org.gemoc.execution.sequential.javaxdsml.ide.ui/plugin.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,4 +308,16 @@
308308
</adapt>
309309
</definition>
310310
</extension>
311+
<extension
312+
point="fr.inria.diverse.melange.ui.contentassist_with">
313+
<proposal
314+
class="org.gemoc.execution.sequential.javaxdsml.ide.ui.editor.SelectDsaProposal">
315+
</proposal>
316+
</extension>
317+
<extension
318+
point="fr.inria.diverse.melange.ui.contentassist_syntax">
319+
<proposal
320+
class="org.gemoc.execution.sequential.javaxdsml.ide.ui.editor.SelectEcoreProposal">
321+
</proposal>
322+
</extension>
311323
</plugin>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.gemoc.execution.sequential.javaxdsml.ide.ui.editor;
2+
3+
import java.util.Set;
4+
5+
import org.eclipse.core.resources.IProject;
6+
import org.eclipse.core.resources.IResource;
7+
import org.eclipse.emf.common.util.URI;
8+
import org.eclipse.jface.dialogs.Dialog;
9+
import org.eclipse.ui.PlatformUI;
10+
import org.gemoc.commons.eclipse.ui.dialogs.SelectAnyIProjectDialog;
11+
import org.gemoc.execution.sequential.javaxdsml.ide.ui.editor.SelectEcoreProposal.SelectEcoreIFileDialog;
12+
import org.gemoc.execution.sequential.javaxdsml.ide.ui.templates.SequentialTemplate;
13+
14+
import fr.inria.diverse.melange.ui.contentassist.IProposal;
15+
16+
public class SelectDsaProposal implements IProposal{
17+
18+
@Override
19+
public String getDisplayText() {
20+
return "Import existing DSA project";
21+
}
22+
23+
@Override
24+
public String getReplacementText() {
25+
SelectAnyIProjectDialog dialog = new SelectAnyIProjectDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
26+
if (dialog.open() == Dialog.OK) {
27+
Object[] selections = dialog.getResult();
28+
if(selections != null
29+
&& selections.length != 0
30+
&& selections[0] instanceof IProject
31+
){
32+
IProject project = (IProject) selections[0];
33+
Set<String> aspects = SequentialTemplate.getAspectClassesList(project);
34+
final StringBuilder insertion = new StringBuilder();
35+
for (String asp : aspects) {
36+
insertion.append("\twith " + asp + "\n");
37+
}
38+
insertion.replace(0, 1, "");//remove the first \t
39+
return insertion.toString();
40+
}
41+
}
42+
43+
return "with qualified.class.name";
44+
}
45+
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package org.gemoc.execution.sequential.javaxdsml.ide.ui.editor;
2+
3+
import java.util.function.Supplier;
4+
5+
import org.eclipse.core.resources.IResource;
6+
import org.eclipse.emf.common.util.URI;
7+
import org.eclipse.jface.dialogs.Dialog;
8+
import org.gemoc.commons.eclipse.core.resources.FileFinderVisitor;
9+
import org.gemoc.commons.eclipse.ui.dialogs.SelectSpecificFileDialog;
10+
11+
import fr.inria.diverse.melange.ui.contentassist.IProposal;
12+
13+
public class SelectEcoreProposal implements IProposal{
14+
15+
class SelectEcoreIFileDialog extends SelectSpecificFileDialog {
16+
public FileFinderVisitor instanciateFinder() {
17+
return new FileFinderVisitor("ecore");
18+
}
19+
}
20+
21+
@Override
22+
public String getDisplayText() {
23+
return "Select an existing Ecore file";
24+
}
25+
26+
@Override
27+
public String getReplacementText() {
28+
SelectEcoreIFileDialog dialog = new SelectEcoreIFileDialog();
29+
if (dialog.open() == Dialog.OK) {
30+
Object[] selections = dialog.getResult();
31+
if(selections != null
32+
&& selections.length != 0
33+
&& selections[0] instanceof IResource
34+
){
35+
IResource ecoreFile = (IResource) selections[0];
36+
String path = "/"+ecoreFile.getProject().getName() +"/"+ecoreFile.getProjectRelativePath();
37+
URI uri = URI.createPlatformResourceURI(path,true);
38+
String replacementText = "\""+uri.toString()+"\"";
39+
return replacementText;
40+
}
41+
}
42+
return "platform/resource/project/file.ecore";
43+
}
44+
}

0 commit comments

Comments
 (0)