瀏覽代碼

Merge pull request #2151 from Yakindu/performance-property-section

only enable xtext once, setEObject is called multiple times
Thomas Kutz 7 年之前
父節點
當前提交
28e8da6af9

+ 18 - 5
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/AbstractEditorPropertySection.java

@@ -75,10 +75,6 @@ public abstract class AbstractEditorPropertySection extends AbstractModelerPrope
 	@Override
 	public void refresh() {
 		super.refresh();
-		if (bindingContext != null)
-			bindingContext.dispose();
-		bindingContext = new ValidatingEMFDatabindingContext(this, form.getShell());
-		bindModel(bindingContext);
 	}
 
 	@Override
@@ -90,6 +86,22 @@ public abstract class AbstractEditorPropertySection extends AbstractModelerPrope
 			toolkit.dispose();
 	}
 
+	@Override
+	protected void setEObject(EObject newValue) {
+		EObject oldValue = getEObject();
+		super.setEObject(newValue);
+		if (newValue != null && newValue != oldValue) {
+			inputChanged();
+		}
+	}
+	
+	protected void inputChanged() {
+		if (bindingContext != null)
+			bindingContext.dispose();
+		bindingContext = new ValidatingEMFDatabindingContext(this, form.getShell());
+		bindModel(bindingContext);
+	}
+
 	@Override
 	public final void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
 		toolkit = new FormToolkit(parent.getDisplay());
@@ -114,7 +126,8 @@ public abstract class AbstractEditorPropertySection extends AbstractModelerPrope
 
 	protected void enableXtext(Control styledText, Injector injector) {
 		final StyledTextXtextAdapter xtextAdapter = new StyledTextXtextAdapter(injector);
-		xtextAdapter.getFakeResourceContext().getFakeResource().eAdapters().add(new ContextElementAdapter(getEObject()));
+		xtextAdapter.getFakeResourceContext().getFakeResource().eAdapters()
+				.add(new ContextElementAdapter(getEObject()));
 		xtextAdapter.adapt((StyledText) styledText);
 
 		initContextMenu(styledText);

+ 2 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/StatePropertySection.java

@@ -97,12 +97,12 @@ public class StatePropertySection extends AbstractTwoColumnEditorPropertySection
 	}
 
 	@Override
-	protected void setEObject(EObject object) {
-		super.setEObject(object);
+	protected void inputChanged() {
 		Injector injector = getInjector(State.class.getName());
 		if (injector != null) {
 			enableXtext(txtSpecification, injector);
 		}
+		super.inputChanged();
 	}
 
 	protected void createTransitionsControl(Composite parent) {

+ 2 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/StatechartPropertySection.java

@@ -136,12 +136,12 @@ public class StatechartPropertySection extends AbstractTwoColumnEditorPropertySe
 	}
 
 	@Override
-	protected void setEObject(EObject object) {
-		super.setEObject(object);
+	protected void inputChanged() {
 		Injector injector = getInjector(Statechart.class.getName());
 		if (injector != null) {
 			enableXtext(textControl, injector);
 		}
+		super.inputChanged();
 	}
 
 	@Override

+ 2 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/TransitionPropertySection.java

@@ -67,12 +67,12 @@ public class TransitionPropertySection extends AbstractTwoColumnEditorPropertySe
 	}
 
 	@Override
-	protected void setEObject(EObject object) {
-		super.setEObject(object);
+	protected void inputChanged() {
 		Injector injector = getInjector(Transition.class.getName());
 		if (injector != null) {
 			enableXtext(textControl, injector);
 		}
+		super.inputChanged();
 	}
 
 	@Override