Skip to content
Snippets Groups Projects
Commit 7f0a52d5 authored by Florian Hölzl's avatar Florian Hölzl
Browse files

YELLOW

refs 307
parent 9ff6797c
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,8 @@ $Id$ ...@@ -17,6 +17,8 @@ $Id$
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.ui.internal; package org.fortiss.tooling.kernel.ui.internal;
import static org.fortiss.tooling.kernel.utils.EcoreUtils.postRefreshNotification;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
...@@ -31,8 +33,6 @@ import org.eclipse.core.runtime.IProgressMonitor; ...@@ -31,8 +33,6 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.NotificationImpl;
import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IDecoration; import org.eclipse.jface.viewers.IDecoration;
...@@ -57,7 +57,7 @@ import org.fortiss.tooling.kernel.ui.service.IMarkerService; ...@@ -57,7 +57,7 @@ import org.fortiss.tooling.kernel.ui.service.IMarkerService;
* @author hoelzl * @author hoelzl
* @author $Author$ * @author $Author$
* @version $Rev$ * @version $Rev$
* @ConQAT.Rating RED Hash: A2A864DADACAF09ABE26E40754307016 * @ConQAT.Rating YELLOW Hash: 17A1ACFF311CC8EBE383929A19604E0C
*/ */
public class MarkerService implements IMarkerService, public class MarkerService implements IMarkerService,
IPersistencyServiceListener, ILightweightLabelDecorator { IPersistencyServiceListener, ILightweightLabelDecorator {
...@@ -291,21 +291,16 @@ public class MarkerService implements IMarkerService, ...@@ -291,21 +291,16 @@ public class MarkerService implements IMarkerService,
/** Stores the top-level element. */ /** Stores the top-level element. */
private ITopLevelElement topElement; private ITopLevelElement topElement;
// TODO @Review CD: magic number AND totally incomprehensible
/** Notification to cause model element display refresh. */
private Notification refreshOnly = new NotificationImpl(
Notification.EVENT_TYPE_COUNT + 256, null, null);
/** Stores the display update UI job. */ /** Stores the display update UI job. */
private final UIJob refreshElementDisplay = new UIJob("Update Markers") { private final UIJob refreshElementDisplay = new UIJob("Update Markers") {
@Override @Override
public IStatus runInUIThread(IProgressMonitor monitor) { public IStatus runInUIThread(IProgressMonitor monitor) {
for (EObject eo : violationsMap.keySet()) { for (EObject eo : violationsMap.keySet()) {
eo.eNotify(refreshOnly); postRefreshNotification(eo);
for (IConstraintViolation<? extends EObject> viol : violationsMap for (IConstraintViolation<? extends EObject> viol : violationsMap
.get(eo)) { .get(eo)) {
viol.getSource().eNotify(refreshOnly); postRefreshNotification(viol.getSource());
} }
} }
return Status.OK_STATUS; return Status.OK_STATUS;
......
...@@ -17,9 +17,13 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $ ...@@ -17,9 +17,13 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.tooling.kernel.utils; package org.fortiss.tooling.kernel.utils;
import static org.eclipse.emf.common.notify.Notification.EVENT_TYPE_COUNT;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.NotificationImpl;
import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.ECollections; import org.eclipse.emf.common.util.ECollections;
import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.EList;
...@@ -34,10 +38,19 @@ import org.eclipse.emf.ecore.util.EcoreUtil; ...@@ -34,10 +38,19 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
* @author ratiu * @author ratiu
* @author $Author: hoelzl $ * @author $Author: hoelzl $
* @version $Rev: 18709 $ * @version $Rev: 18709 $
* @ConQAT.Rating YELLOW Hash: 85264FC59A1B469EBEBF06B27CCDF9B5 * @ConQAT.Rating YELLOW Hash: D2EE43270D816D9D45663D29F23C739F
*/ */
public class EcoreUtils { public class EcoreUtils {
/** The new event type count defined by the kernel. */
public static final int KERNEL_EMF_EVENT_TYPE_COUNT = EVENT_TYPE_COUNT + 1;
/** Notification to cause model element display refresh. */
// we use a large number above EMF standard notifications to avoid collision
// with other EMF tools.
private static final Notification refreshNotification = new NotificationImpl(
EVENT_TYPE_COUNT + 1, null, null);
/** /**
* Converts an EList of a given type into an EList of one of its subtypes. * Converts an EList of a given type into an EList of one of its subtypes.
* Utility method to avoid unnecessary casts. * Utility method to avoid unnecessary casts.
...@@ -154,4 +167,15 @@ public class EcoreUtils { ...@@ -154,4 +167,15 @@ public class EcoreUtils {
} }
return children; return children;
} }
/**
* Posts a {@link Notification} with an event type ID outside the EMF
* default notification IDs to cause UI refreshes.
*
* @param eObject
* the target model element to be refreshed
*/
public static void postRefreshNotification(EObject eObject) {
eObject.eNotify(refreshNotification);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment