Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html /
  
  package org.eclipse.xtext.ui.editor.model.edit;
  
 import java.util.List;
 
 import  org.eclipse.text.edits.MultiTextEdit;
 import  org.eclipse.text.edits.ReplaceEdit;
 import  org.eclipse.text.edits.TextEdit;
 

Author(s):
Knut Wannheden - Initial contribution and API
Jan Koehnlein
 
 public class DefaultTextEditComposer extends EContentAdapter implements ITextEditComposer {
 
 
 	private Resource resource;
 	private int resourceSize;
 	private boolean resourceChanged;
 
 
 	private boolean recording = false;
 
 	public void notifyChanged(Notification notification) {
 		super.notifyChanged(notification);
 
 		if (!doRecord(notification))
 			return;
 
 		if (notification.getNotifier() instanceof EObject) {
 		} else if (notification.getNotifier() instanceof Resource) {
 		}
 	}
 
 	protected void recordObjectModification(EObject obj) {
 		if (obj.eResource() == null || obj.eResource() != )
 		else
 	}
 
 	protected void recordResourceModification(Resource notifier) {
 		 = true;
 	}
 
 		return ;
 	}
 
 	protected boolean doRecord(Notification notification) {
 		if (! || notification.isTouch())
 			return false;
 
 		switch (notification.getEventType()) {
 				return true;
 			default:
 				return false;
 		}
 	}
 
 	protected void reset() {
		 = false;
	}
	public void beginRecording(Resource newResource) {
		if (newResource != ) {
			if ( != null)
			newResource.eAdapters().add(this);
			 = newResource;
		}
else {
			final EObject root = .getContents().get(0);
			ICompositeNode rootNode = NodeModelUtils.getNode(root);
			if (rootNode == null) {
				throw new IllegalStateException("Cannot find root node in resource " + .getURI());
			}
		}
		 = true;
	}
	public TextEdit endRecording() {
		 = false;
		TextEdit textEdit = getTextEdit();
		return textEdit;
	}
	public TextEdit getTextEdit() {
		TextEdit result = null;
			result = new ReplaceEdit(0, text);
else {
			final Collection<EObjectmodifiedObjects = getModifiedObjects();
			if (!modifiedObjects.isEmpty()) {
				List<TextEdit> edits = getObjectEdits();
				if (edits.size() == 1)
					result = edits.get(0);
				else {
					result = new MultiTextEdit();
					for (TextEdit edit : edits) {
						result.addChild(edit);
					}
				}
			}
		}
		return result;
	}
	protected List<TextEdit> getObjectEdits() {
		final Collection<EObjectmodifiedObjects = getModifiedObjects();
		Collection<EObjecttopLevelObjects = EcoreUtil.filterDescendants(modifiedObjects);
		Iterable<EObjectcontainedModifiedObjects = Collections.emptyList();
			final EObject root = .getContents().get(0);
			containedModifiedObjects = Iterables.filter(topLevelObjectsnew Predicate<EObject>() {
				public boolean apply(EObject input) {
					return EcoreUtil.isAncestor(rootinput);
				}
			});
		}
		List<TextEdit> edits = Lists.newArrayListWithExpectedSize(Iterables.size(containedModifiedObjects));
		for (EObject modifiedObject : containedModifiedObjects) {
			ReplaceRegion replaceRegion = .serializeReplacement(modifiedObjectgetSaveOptions());
			TextEdit edit = new ReplaceEdit(replaceRegion.getOffset(), replaceRegion.getLength(), replaceRegion.getText());
			edits.add(edit);
		}
		return edits;
	}
	protected SaveOptions getSaveOptions() {
		return SaveOptions.defaultOptions();
	}

Deprecated:
use setSerializer(ISerializer) instead.
	public void setSerializerUtil(ISerializer serializer) {
		setSerializer(serializer);
	}

If used in a non-Guice environment, we need to be able to set this.

Since:
2.0
	public void setSerializer(ISerializer serializer) {
		this. = serializer;
	}
New to GrepCode? Check out our FAQ X