Skip to content

Commit 87371eb

Browse files
author
emre.kirmizi
committed
modelwriter implemenation on java outline.
1 parent 36f29aa commit 87371eb

File tree

10 files changed

+374
-299
lines changed

10 files changed

+374
-299
lines changed

Source/eu.modelwriter.marker.command/META-INF/MANIFEST.MF

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ Require-Bundle: org.eclipse.core.runtime,
1414
eu.modelwriter.configuration;bundle-version="1.0.0",
1515
org.eclipse.ui.console,
1616
eu.modelwriter.alloyanalyzer;bundle-version="1.0.0",
17-
org.eclipse.core.resources
17+
org.eclipse.core.resources,
18+
org.eclipse.jdt.ui
1819
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
1920
Bundle-ActivationPolicy: lazy
2021
Export-Package: eu.modelwriter.marker.command;

Source/eu.modelwriter.marker.command/plugin.xml

Lines changed: 46 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -350,15 +350,13 @@
350350
</and>
351351
</definition>
352352
<definition
353-
id="when.on.ContentOutline.and.active.page.is.JavaOutlinePage">
354-
<and>
353+
id="when.activePage.is.JavaOutlinePage">
355354
<with
356-
variable="activePage">
357-
<instanceof
358-
value="org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage">
359-
</instanceof>
355+
variable="activePartId">
356+
<equals
357+
value="org.eclipse.ui.views.ContentOutline">
358+
</equals>
360359
</with>
361-
</and>
362360
</definition>
363361
</extension>
364362

@@ -412,18 +410,22 @@
412410
<menu
413411
icon="platform:/plugin/eu.modelwriter.marker/icons/Menu.gif"
414412
id="eu.modelwriter.marker.command.popupmenu"
415-
label="Tarski"
416-
sibling_order="&lt;command&#x0D;&#x0A;">
413+
label="Tarski">
417414
<command
418415
commandId="eu.modelwriter.marker.command.mark"
419416
label="Create a Trace Element"
420417
icon="platform:/plugin/eu.modelwriter.marker/icons/Black.gif"
421418
style="push"
422419
tooltip="Trace selected element">
423420
<visibleWhen>
424-
<reference
425-
definitionId="activePart.instanceOf.IEditorPart">
426-
</reference>
421+
<or>
422+
<reference
423+
definitionId="when.activePage.is.JavaOutlinePage">
424+
</reference>
425+
<reference
426+
definitionId="activePart.instanceOf.IEditorPart">
427+
</reference>
428+
</or>
427429
</visibleWhen>
428430
</command>
429431
<command
@@ -433,9 +435,14 @@
433435
style="push"
434436
tooltip="Create a trace element with a type ">
435437
<visibleWhen>
436-
<reference
437-
definitionId="activePart.instanceOf.IEditorPart">
438-
</reference>
438+
<or>
439+
<reference
440+
definitionId="when.activePage.is.JavaOutlinePage">
441+
</reference>
442+
<reference
443+
definitionId="activePart.instanceOf.IEditorPart">
444+
</reference>
445+
</or>
439446
</visibleWhen>
440447
</command>
441448
<command
@@ -445,9 +452,14 @@
445452
style="push"
446453
tooltip="Link trace element with other trace elements">
447454
<visibleWhen>
448-
<reference
449-
definitionId="when.activePart.is.contextualView.or.IEditorPart.or.masterView">
450-
</reference>
455+
<or>
456+
<reference
457+
definitionId="when.activePage.is.JavaOutlinePage">
458+
</reference>
459+
<reference
460+
definitionId="when.activePart.is.contextualView.or.IEditorPart.or.masterView">
461+
</reference>
462+
</or>
451463
</visibleWhen>
452464
</command>
453465
<command
@@ -457,9 +469,14 @@
457469
style="push"
458470
tooltip="Deletes selected item">
459471
<visibleWhen>
460-
<reference
461-
definitionId="when.activePart.is.contextualView.or.IEditorPart.or.masterView">
462-
</reference>
472+
<or>
473+
<reference
474+
definitionId="when.activePage.is.JavaOutlinePage">
475+
</reference>
476+
<reference
477+
definitionId="when.activePart.is.contextualView.or.IEditorPart.or.masterView">
478+
</reference>
479+
</or>
463480
</visibleWhen>
464481
</command>
465482
<command
@@ -488,9 +505,14 @@
488505
style="push"
489506
tooltip="Adding type to/Removing type from selected marker">
490507
<visibleWhen>
491-
<reference
492-
definitionId="when.activePart.is.contextualView.or.IEditorPart.or.masterView">
493-
</reference>
508+
<or>
509+
<reference
510+
definitionId="when.activePage.is.JavaOutlinePage">
511+
</reference>
512+
<reference
513+
definitionId="when.activePart.is.contextualView.or.IEditorPart.or.masterView">
514+
</reference>
515+
</or>
494516
</visibleWhen>
495517
</command>
496518
<!-- <command
@@ -565,18 +587,6 @@
565587
</reference>
566588
</visibleWhen>
567589
</command>
568-
<command
569-
commandId="eu.modelwriter.marker.command.javaOutlineTest"
570-
label="Java Outline Test"
571-
style="push">
572-
<!--
573-
<visibleWhen>
574-
<reference
575-
definitionId="when.on.ContentOutline.and.active.page.is.JavaOutlinePage">
576-
</reference>
577-
</visibleWhen>
578-
-->
579-
</command>
580590
</menu>
581591
</menuContribution>
582592
<menuContribution
@@ -823,10 +833,6 @@
823833
class="eu.modelwriter.marker.command.AlloyExampleToEMFHandler"
824834
commandId="eu.modelwriter.marker.command.alloyexample2emfinstance">
825835
</handler>
826-
<handler
827-
class="eu.modelwriter.marker.command.JavaOutlineTest"
828-
commandId="eu.modelwriter.marker.command.javaOutlineTest">
829-
</handler>
830836
</extension>
831837

832838
<!-- commands for binding keys -->
@@ -940,10 +946,6 @@
940946
id="eu.modelwriter.marker.command.alloyexample2emfinstance"
941947
name="Create EMF Instance From Alloy Example">
942948
</command>
943-
<command
944-
id="eu.modelwriter.marker.command.javaOutlineTest"
945-
name="Java Outline Test">
946-
</command>
947949
</extension>
948950

949951
<extension

Source/eu.modelwriter.marker.command/src/eu/modelwriter/marker/command/AddRemoveTypeHandler.java

Lines changed: 70 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.eclipse.emf.ecore.EObject;
2626
import org.eclipse.emf.ecore.presentation.EcoreEditor;
2727
import org.eclipse.emf.ecore.util.EcoreUtil;
28+
import org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor;
2829
import org.eclipse.jface.dialogs.IDialogConstants;
2930
import org.eclipse.jface.dialogs.MessageDialog;
3031
import org.eclipse.jface.text.ITextSelection;
@@ -45,24 +46,22 @@
4546
import eu.modelwriter.marker.ui.internal.wizards.markerwizard.MarkerWizard;
4647
import eu.modelwriter.marker.ui.internal.wizards.selectionwizard.SelectionWizard;
4748

49+
@SuppressWarnings("restriction")
4850
public class AddRemoveTypeHandler extends AbstractHandler {
4951
public static String COMMAND_ID = "eu.modelwriter.marker.command.addremovetype";
52+
IEditorPart editor;
5053
IFile file;
5154
ISelection selection;
55+
IMarker selectedMarker;
5256
private ArrayList<IMarker> candidateToTypeChanging;
5357

5458
private void addRemoveType() {
55-
this.file = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
56-
.getActiveEditor().getEditorInput().getAdapter(IFile.class);
57-
this.selection =
58-
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
59-
6059
if (!MarkerPage.isParsed()) {
61-
final MessageDialog parseCtrlDialog = new MessageDialog(
62-
MarkerActivator.getShell(), "Type Information", null,
63-
"You dont have any marker type registered to system! \n"
64-
+ "Please parse an alloy file first",
65-
MessageDialog.INFORMATION, new String[] {"OK"}, 0);
60+
final MessageDialog parseCtrlDialog =
61+
new MessageDialog(MarkerActivator.getShell(), "Type Information", null,
62+
"You dont have any marker type registered to system! \n"
63+
+ "Please parse an alloy file first",
64+
MessageDialog.INFORMATION, new String[] {"OK"}, 0);
6665
parseCtrlDialog.open();
6766
return;
6867
}
@@ -74,13 +73,10 @@ private void addRemoveType() {
7473
return;
7574
}
7675

77-
IMarker selectedMarker = this.getMarker();
78-
selectedMarker = MarkUtilities.getLeaderOfMarker(selectedMarker);
79-
8076
if (selectedMarker != null && selectedMarker.exists()) {
81-
this.findCandidateToTypeChangingMarkers(selectedMarker);
77+
findCandidateToTypeChangingMarkers(selectedMarker);
8278
if (actionSelectionDialog.getReturnCode() == IDialogConstants.YES_ID) {
83-
this.addType(selectedMarker);
79+
addType(selectedMarker);
8480
} else if (actionSelectionDialog.getReturnCode() == IDialogConstants.NO_ID) {
8581
final MessageDialog warningDialog =
8682
new MessageDialog(MarkerActivator.getShell(), "Warning!", null,
@@ -90,41 +86,47 @@ private void addRemoveType() {
9086
if (returnCode != 0) {
9187
return;
9288
}
93-
this.removeType(selectedMarker);
89+
removeType(selectedMarker);
9490
}
9591
// MarkerUpdater.updateTargets(selectedMarker);
9692
// MarkerUpdater.updateSources(selectedMarker);
9793
} else {
98-
final MessageDialog dialog = new MessageDialog(
99-
MarkerActivator.getShell(), "There is no marker in this position",
100-
null, "Please select valid marker", MessageDialog.INFORMATION, new String[] {"Ok"}, 0);
94+
final MessageDialog dialog =
95+
new MessageDialog(MarkerActivator.getShell(), "There is no marker in this position", null,
96+
"Please select valid marker", MessageDialog.INFORMATION, new String[] {"Ok"}, 0);
10197
dialog.open();
10298
return;
10399
}
104100
}
105101

106102
private void addType(final IMarker selectedMarker) {
107-
final MarkerWizard markerWizard = new MarkerWizard(selectedMarker);
103+
final MarkerWizard markerTypeWizard = new MarkerWizard(selectedMarker);
108104

109-
final WizardDialog dialog =
110-
new WizardDialog(MarkerActivator.getShell(), markerWizard);
105+
final WizardDialog dialog = new WizardDialog(MarkerActivator.getShell(), markerTypeWizard);
111106
dialog.open();
112107
}
113108

114109
@Override
115110
public Object execute(final ExecutionEvent event) throws ExecutionException {
116111
if (AlloyUtilities.isExists()) {
117-
this.candidateToTypeChanging = new ArrayList<IMarker>();
118-
this.addRemoveType();
112+
candidateToTypeChanging = new ArrayList<IMarker>();
113+
file = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()
114+
.getEditorInput().getAdapter(IFile.class);
115+
selection =
116+
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
117+
editor =
118+
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
119+
selectedMarker = MarkUtilities.getLeaderOfMarker(getMarker());
120+
121+
addRemoveType();
119122
if (Activator.getDefault().getWorkbench().getWorkbenchWindows()[0].getActivePage()
120123
.findView(Visualization.ID) != null) {
121124
Visualization.showViz();
122125
}
123126
} else {
124-
final MessageDialog infoDialog =
125-
new MessageDialog(MarkerActivator.getShell(), "System Information",
126-
null, "You dont have any registered alloy file to system.", MessageDialog.INFORMATION,
127-
new String[] {"Ok"}, 0);
127+
final MessageDialog infoDialog = new MessageDialog(MarkerActivator.getShell(),
128+
"System Information", null, "You dont have any registered alloy file to system.",
129+
MessageDialog.INFORMATION, new String[] {"Ok"}, 0);
128130
infoDialog.open();
129131
}
130132
return null;
@@ -134,60 +136,61 @@ public Object execute(final ExecutionEvent event) throws ExecutionException {
134136
* @param selectedMarker from text
135137
*/
136138
private void findCandidateToTypeChangingMarkers(final IMarker selectedMarker) {
137-
this.candidateToTypeChanging.add(selectedMarker);
139+
candidateToTypeChanging.add(selectedMarker);
138140

139141
final Map<IMarker, String> fieldsSources =
140142
AlloyUtilities.getRelationsOfSecondSideMarker(selectedMarker);
141143
final ArrayList<IMarker> relationsSources =
142144
AlloyUtilities.getSourcesOfMarkerAtRelations(selectedMarker);
143145

144146
for (final IMarker iMarker : fieldsSources.keySet()) {
145-
this.candidateToTypeChanging.add(iMarker);
147+
candidateToTypeChanging.add(iMarker);
146148
}
147149

148150
for (final IMarker iMarker : relationsSources) {
149-
this.candidateToTypeChanging.add(iMarker);
151+
candidateToTypeChanging.add(iMarker);
150152
}
151153
}
152154

153155
private IMarker getMarker() {
154156
IMarker selectedMarker = null;
155-
if (this.selection instanceof ITextSelection) {
156-
final ITextSelection textSelection = (ITextSelection) this.selection;
157-
158-
final ArrayList<IMarker> markerList =
159-
MarkerFactory.findMarkersInSelection(this.file, textSelection);
160-
if (markerList != null) {
161-
if (markerList.size() == 1) {
162-
selectedMarker = markerList.get(0);
163-
} else if (markerList.size() > 1) {
164-
final SelectionWizard selectionWizard = new SelectionWizard(markerList);
165-
final WizardDialog selectionDialog =
166-
new WizardDialog(MarkerActivator.getShell(), selectionWizard);
167-
if (selectionDialog.open() == 1) {
168-
return null;
157+
if (selection != null) {
158+
if (selection instanceof ITextSelection) {
159+
final ITextSelection textSelection = (ITextSelection) selection;
160+
161+
final ArrayList<IMarker> markerList =
162+
MarkerFactory.findMarkersInSelection(file, textSelection);
163+
if (markerList != null) {
164+
if (markerList.size() == 1) {
165+
selectedMarker = markerList.get(0);
166+
} else if (markerList.size() > 1) {
167+
final SelectionWizard selectionWizard = new SelectionWizard(markerList);
168+
final WizardDialog selectionDialog =
169+
new WizardDialog(MarkerActivator.getShell(), selectionWizard);
170+
if (selectionDialog.open() == 1) {
171+
return null;
172+
}
173+
selectedMarker = selectionWizard.getSelectedMarker();
169174
}
170-
selectedMarker = selectionWizard.getSelectedMarker();
171175
}
172-
}
173-
} else if (this.selection instanceof ITreeSelection) {
174-
final IEditorPart editor =
175-
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
176-
final ITreeSelection treeSelection = (ITreeSelection) this.selection;
177-
if (this.selection != null
178-
&& ((ITreeSelection) this.selection).getFirstElement() instanceof IMarker) {
179-
selectedMarker = (IMarker) ((ITreeSelection) this.selection).getFirstElement();
180-
} else if (this.selection != null && editor instanceof EcoreEditor) {
181-
if (treeSelection.getFirstElement() instanceof ENamedElement
182-
&& ((ENamedElement) treeSelection.getFirstElement()).getName() != null
183-
&& !((ENamedElement) treeSelection.getFirstElement()).getName().isEmpty()) {
184-
185-
final URI uri = EcoreUtil.getURI((ENamedElement) treeSelection.getFirstElement());
186-
187-
selectedMarker = MarkerFactory.findMarkersByUri(this.file, uri.toString());
188-
} else if (!((EObject) treeSelection.getFirstElement() instanceof EModelElement)) {
189-
final URI uri = EcoreUtil.getURI((EObject) treeSelection.getFirstElement());
190-
selectedMarker = MarkerFactory.findMarkersByUri(this.file, uri.toString());
176+
} else if (selection instanceof ITreeSelection) {
177+
final ITreeSelection treeSelection = (ITreeSelection) selection;
178+
if (((ITreeSelection) selection).getFirstElement() instanceof IMarker) {
179+
selectedMarker = (IMarker) ((ITreeSelection) selection).getFirstElement();
180+
} else if (editor instanceof EcoreEditor) {
181+
if (treeSelection.getFirstElement() instanceof ENamedElement
182+
&& ((ENamedElement) treeSelection.getFirstElement()).getName() != null
183+
&& !((ENamedElement) treeSelection.getFirstElement()).getName().isEmpty()) {
184+
185+
final URI uri = EcoreUtil.getURI((ENamedElement) treeSelection.getFirstElement());
186+
187+
selectedMarker = MarkerFactory.findMarkersByUri(file, uri.toString());
188+
} else if (!((EObject) treeSelection.getFirstElement() instanceof EModelElement)) {
189+
final URI uri = EcoreUtil.getURI((EObject) treeSelection.getFirstElement());
190+
selectedMarker = MarkerFactory.findMarkersByUri(file, uri.toString());
191+
}
192+
} else if (editor instanceof CompilationUnitEditor) {
193+
selectedMarker = MarkerFactory.findMarkerByOutlineTreeSelection(treeSelection, file);
191194
}
192195
}
193196
}
@@ -199,8 +202,8 @@ private void removeType(IMarker selectedMarker) {
199202
AlloyUtilities.getTotalTargetCount(selectedMarker));
200203

201204
IMarker marker = null;
202-
for (int i = 1; i < this.candidateToTypeChanging.size(); i++) {
203-
marker = this.candidateToTypeChanging.get(i);
205+
for (int i = 1; i < candidateToTypeChanging.size(); i++) {
206+
marker = candidateToTypeChanging.get(i);
204207
AnnotationFactory.convertAnnotationType(marker, true,
205208
MarkUtilities.compare(marker, selectedMarker),
206209
AlloyUtilities.getTotalTargetCount(marker));

0 commit comments

Comments
 (0)