Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/uml/properties/org.eclipse.papyrus.uml.properties.xtext/src/org/eclipse/papyrus/uml/properties/xtext/XtextLanguageEditor.java')
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.xtext/src/org/eclipse/papyrus/uml/properties/xtext/XtextLanguageEditor.java73
1 files changed, 66 insertions, 7 deletions
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.xtext/src/org/eclipse/papyrus/uml/properties/xtext/XtextLanguageEditor.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.xtext/src/org/eclipse/papyrus/uml/properties/xtext/XtextLanguageEditor.java
index 29de4d5e5c9..d58e8d41630 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.xtext/src/org/eclipse/papyrus/uml/properties/xtext/XtextLanguageEditor.java
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.xtext/src/org/eclipse/papyrus/uml/properties/xtext/XtextLanguageEditor.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2017 CEA LIST.
+ * Copyright (c) 2014, 2016 - 2018 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -8,7 +8,8 @@
*
* SPDX-License-Identifier: EPL-2.0
*
- *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea. fr - Bug 536594
*****************************************************************************/
package org.eclipse.papyrus.uml.properties.xtext;
@@ -29,7 +30,7 @@ import org.eclipse.papyrus.infra.emf.gmf.command.GMFtoEMFCommandWrapper;
import org.eclipse.papyrus.infra.properties.ui.modelelement.ModelElement;
import org.eclipse.papyrus.infra.ui.emf.dialog.NestedEditingDialogContext;
import org.eclipse.papyrus.uml.properties.modelelement.UMLModelElement;
-import org.eclipse.papyrus.uml.properties.widgets.BodyEditor;
+import org.eclipse.papyrus.uml.properties.widgets.LanguageBodyEditor;
import org.eclipse.papyrus.uml.xtext.integration.DefaultXtextDirectEditorConfiguration;
import org.eclipse.papyrus.uml.xtext.integration.StyledTextXtextAdapter;
import org.eclipse.papyrus.uml.xtext.integration.core.ContextElementAdapter;
@@ -48,7 +49,7 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Listener;
-public class XtextLanguageEditor implements BodyEditor, IContextElementProvider {
+public class XtextLanguageEditor implements LanguageBodyEditor, IContextElementProvider {
protected StyledText textControl;
@@ -66,8 +67,15 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
final private ContextElementAdapter contextElementAdapter = new ContextElementAdapter(this);
+ /**
+ * the language of the current editor
+ */
+ private String language = ""; //$NON-NLS-1$
+
+
+ @Override
public void createWidget(Composite parent, int style) {
- undoRedoStack = new UndoRedoStack<ExtendedModifyEvent>();
+ undoRedoStack = new UndoRedoStack<>();
createTextControl(parent);
}
@@ -77,6 +85,7 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
textControl.addFocusListener(new FocusListener() {
+ @Override
public void focusLost(FocusEvent e) {
IParser parser = getParser();
if (xtextAdapter == null) { // May happen under specific circumstances (See Bug 433647)
@@ -103,6 +112,7 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
}
}
+ @Override
public void focusGained(FocusEvent e) {
// Nothing
}
@@ -114,6 +124,7 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
// GridDataFactory.fillDefaults().grab(true, true).hint(parent.getSize()).applyTo(textControl);
textControl.addExtendedModifyListener(new ExtendedModifyListener() {
+ @Override
public void modifyText(ExtendedModifyEvent event) {
if (isUndo) {
undoRedoStack.pushRedo(event);
@@ -230,15 +241,27 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
protected DefaultXtextDirectEditorConfiguration getConfigurationFromSelection() {
EObject semanticElement = getEObject();
if (semanticElement != null) {
+ String languagePreferred = this.language;
+ // check if we found a configuration
+ if (!languagePreferred.isEmpty()) {
+ IDirectEditorConfiguration configuration = DirectEditorsUtil.findEditorConfiguration(languagePreferred, semanticElement);
+ if (configuration instanceof DefaultXtextDirectEditorConfiguration) {
+ DefaultXtextDirectEditorConfiguration xtextConfiguration = (DefaultXtextDirectEditorConfiguration) configuration;
+ xtextConfiguration.preEditAction(semanticElement);
+ return xtextConfiguration;
+ }
+ return null; // no configuration found for the current language
+ }
+
+ // no language defined, so we use the preference store
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
String semanticClassName = semanticElement.eClass().getInstanceClassName();
String key = IDirectEditorsIds.EDITOR_FOR_ELEMENT + semanticClassName;
- String languagePreferred = store.getString(key);
+ languagePreferred = store.getString(key);
if (languagePreferred != null && !languagePreferred.equals("")) { //$NON-NLS-1$
IDirectEditorConfiguration configuration = DirectEditorsUtil.findEditorConfiguration(languagePreferred, semanticElement);
if (configuration instanceof DefaultXtextDirectEditorConfiguration) {
-
DefaultXtextDirectEditorConfiguration xtextConfiguration = (DefaultXtextDirectEditorConfiguration) configuration;
xtextConfiguration.preEditAction(semanticElement);
return xtextConfiguration;
@@ -248,10 +271,12 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
return null;
}
+ @Override
public EObject getContextObject() {
return getEObject();
}
+ @Override
public void setInput(String value) {
if (value != null) {
textControl.setText(value);
@@ -262,6 +287,7 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
}
}
+ @Override
public void dispose() {
// dispose resources to avoid memory leaks
if (textControl != null) {
@@ -274,19 +300,24 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
}
}
+ @Override
public void addChangeListener(Listener listener) {
}
+ @Override
public void removeChangeListener(Listener listener) {
}
+ @Override
public String getValue() {
return null;
}
+ @Override
public void setReadOnly(boolean readOnly) {
}
+ @Override
public void setContext(ModelElement context) {
if (context instanceof UMLModelElement) {
currentEObj = ((UMLModelElement) context).getSource();
@@ -300,4 +331,32 @@ public class XtextLanguageEditor implements BodyEditor, IContextElementProvider
protected EObject getEObject() {
return currentEObj;
}
+
+ /**
+ * @see org.eclipse.papyrus.uml.properties.widgets.LanguageBodyEditor#setLanguage(java.lang.String)
+ *
+ * @param language
+ * @since 1.2.100
+ */
+ @Override
+ public void setLanguage(final String language) {
+ if (null == this.language) {
+ this.language = ""; //$NON-NLS-1$
+ } else {
+ this.language = language;
+ }
+ }
+
+ /**
+ * @see org.eclipse.papyrus.uml.properties.widgets.LanguageBodyEditor#getLanguage()
+ *
+ * @return
+ *
+ * @since 1.2.100
+ *
+ */
+ @Override
+ public String getLanguage() {
+ return this.language != null ? this.language : ""; //$NON-NLS-1$
+ }
}

Back to the top