Browse Source

invalidate cache (#1736)

Andreas Mülder 7 years ago
parent
commit
74d8925bfa

+ 13 - 3
plugins/org.yakindu.base.xtext.utils.gmf/src/org/yakindu/base/xtext/utils/gmf/figures/SyntaxColoringLabel.java

@@ -91,6 +91,7 @@ public class SyntaxColoringLabel extends WrappingLabel implements MouseMotionLis
 	protected static class StyledTextFlow extends TextFlowEx {
 
 		private FlowUtilitiesEx flowUtilities;
+		private StyleTextUtilities textUtilities;
 		private static final Image dummy = new Image(Display.getDefault(), 1, 1);
 		private static final GC gc = new GC(dummy);
 		private Font boldFont;
@@ -181,8 +182,6 @@ public class SyntaxColoringLabel extends WrappingLabel implements MouseMotionLis
 		public FlowUtilitiesEx getFlowUtilities() {
 			if (flowUtilities == null) {
 				flowUtilities = new FlowUtilitiesEx(MapModeUtil.getMapMode(this)) {
-					protected TextUtilitiesEx textUtilities;
-
 					@Override
 					protected TextUtilities getTextUtilities() {
 						if (textUtilities == null) {
@@ -195,13 +194,21 @@ public class SyntaxColoringLabel extends WrappingLabel implements MouseMotionLis
 			return flowUtilities;
 		}
 
+		@Override
+		public void invalidate() {
+			if (textUtilities != null) {
+				textUtilities.invalidate();
+			}
+			super.invalidate();
+		}
+
 		protected class StyleTextUtilities extends TextUtilitiesEx {
 
 			protected LoadingCache<String, Dimension> cache;
 
 			public StyleTextUtilities(IMapMode mapmode) {
 				super(mapmode);
-				cache = CacheBuilder.newBuilder().recordStats().build(new CacheLoader<String, Dimension>() {
+				cache = CacheBuilder.newBuilder().build(new CacheLoader<String, Dimension>() {
 					@Override
 					public Dimension load(String key) throws Exception {
 						return getTextExtentsInternal(key, getFont());
@@ -243,6 +250,9 @@ public class SyntaxColoringLabel extends WrappingLabel implements MouseMotionLis
 
 			}
 
+			public void invalidate() {
+				cache.invalidateAll();
+			}
 		}
 	}
 }

+ 2 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/PlugableExternalXtextLabelEditPart.java

@@ -186,7 +186,8 @@ public abstract class PlugableExternalXtextLabelEditPart extends ExternalXtextLa
 	public void propertyChange(PropertyChangeEvent event) {
 		if (StatechartPreferenceConstants.PREF_SYNTAX_COLORING.equals(event.getProperty())) {
 			setLabelStyles();
-			getFigure().repaint();
+			getFigure().invalidateTree();
+			getFigure().revalidate();
 		}
 	}
 }

+ 3 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/PlugableXtextLabelEditPart.java

@@ -186,7 +186,9 @@ public abstract class PlugableXtextLabelEditPart extends XtextLabelEditPart
 	public void propertyChange(PropertyChangeEvent event) {
 		if (StatechartPreferenceConstants.PREF_SYNTAX_COLORING.equals(event.getProperty())) {
 			setLabelStyles();
-			getFigure().repaint();
+			getFigure().invalidateTree();
+			getFigure().revalidate();
+
 		}
 	}