blob: 64549282656f23500a43a7627d2240171f6c0cff [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation 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
*
* Contributors:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.xml.core.internal;
import org.eclipse.jface.text.DocumentEvent;
import org.eclipse.jface.text.IDocumentListener;
import org.eclipse.wst.sse.core.internal.provisional.IModelStateListener;
import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
import org.eclipse.wst.sse.core.internal.provisional.events.AboutToBeChangedEvent;
import org.eclipse.wst.sse.core.internal.provisional.events.IModelAboutToBeChangedListener;
import org.eclipse.wst.sse.core.internal.provisional.events.IStructuredDocumentListener;
import org.eclipse.wst.sse.core.internal.provisional.events.NewDocumentEvent;
import org.eclipse.wst.sse.core.internal.provisional.events.NoChangeEvent;
import org.eclipse.wst.sse.core.internal.provisional.events.RegionChangedEvent;
import org.eclipse.wst.sse.core.internal.provisional.events.RegionsReplacedEvent;
import org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentRegionsReplacedEvent;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
import org.eclipse.wst.sse.core.internal.util.Debug;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
/**
* Purely for use in debugging
*/
public class EveryNodeDebugAdapter implements IDebugAdapter {
static class InternalDocumentListener implements IDocumentListener {
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.text.IDocumentListener#documentAboutToBeChanged(org.eclipse.jface.text.DocumentEvent)
*/
public void documentAboutToBeChanged(DocumentEvent event) {
Debug.println("IdocumentAboutToBeChanged: " + event); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.text.IDocumentListener#documentChanged(org.eclipse.jface.text.DocumentEvent)
*/
public void documentChanged(DocumentEvent event) {
Debug.println("IdocumentChanged: " + event); //$NON-NLS-1$
}
}
static class InternalModelStateListener implements IModelStateListener {
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.IModelStateListener#modelAboutToBeChanged(org.eclipse.wst.sse.core.IStructuredModel)
*/
public void modelAboutToBeChanged(IStructuredModel model) {
Debug.println("modelAboutToBeChanged: " + model); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.IModelStateListener#modelChanged(org.eclipse.wst.sse.core.IStructuredModel)
*/
public void modelChanged(IStructuredModel model) {
Debug.println("modelChanged: " + model); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.IModelStateListener#modelDirtyStateChanged(org.eclipse.wst.sse.core.IStructuredModel,
* boolean)
*/
public void modelDirtyStateChanged(IStructuredModel model, boolean isDirty) {
Debug.println("modelDirtyStateChanged: " + model); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.IModelStateListener#modelResourceDeleted(org.eclipse.wst.sse.core.IStructuredModel)
*/
public void modelResourceDeleted(IStructuredModel model) {
Debug.println("modelResourceDeleted: " + model); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.IModelStateListener#modelResourceMoved(org.eclipse.wst.sse.core.IStructuredModel,
* org.eclipse.wst.sse.core.IStructuredModel)
*/
public void modelResourceMoved(IStructuredModel oldModel, IStructuredModel newModel) {
Debug.println("modelResourceMoved: " + "oldModel: " + oldModel + "newModel: " + newModel); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
public void modelAboutToBeReinitialized(IStructuredModel structuredModel) {
Debug.println("modelAboutToBeReinitialized: " + "structuredModel: " + structuredModel); //$NON-NLS-1$ //$NON-NLS-2$
}
public void modelReinitialized(IStructuredModel structuredModel) {
Debug.println("modelReinitialized: " + "structuredModel: " + structuredModel); //$NON-NLS-1$ //$NON-NLS-2$
}
}
static class InternalStructuredDocumentAboutToChange implements IModelAboutToBeChangedListener {
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.events.IModelAboutToBeChangedListener#modelAboutToBeChanged(org.eclipse.wst.sse.core.events.AboutToBeChangedEvent)
*/
public void modelAboutToBeChanged(AboutToBeChangedEvent structuredDocumentEvent) {
Debug.println("structuredDocumentAboutToBeChanged: " + structuredDocumentEvent); //$NON-NLS-1$
}
}
static class InternalStructuredDocumentListener implements IStructuredDocumentListener {
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.events.IStructuredDocumentListener#newModel(org.eclipse.wst.sse.core.events.NewDocumentContentEvent)
*/
public void newModel(NewDocumentEvent structuredDocumentEvent) {
Debug.println("structuredDocumentChanged - newModel: " + structuredDocumentEvent); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.events.IStructuredDocumentListener#noChange(org.eclipse.wst.sse.core.events.NoChangeEvent)
*/
public void noChange(NoChangeEvent structuredDocumentEvent) {
Debug.println("structuredDocumentChanged - noChange: " + structuredDocumentEvent); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.events.IStructuredDocumentListener#nodesReplaced(org.eclipse.wst.sse.core.events.StructuredDocumentRegionsReplacedEvent)
*/
public void nodesReplaced(StructuredDocumentRegionsReplacedEvent structuredDocumentEvent) {
Debug.println("structuredDocumentChanged - nodesReplaced: " + structuredDocumentEvent); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.events.IStructuredDocumentListener#regionChanged(org.eclipse.wst.sse.core.events.RegionChangedEvent)
*/
public void regionChanged(RegionChangedEvent structuredDocumentEvent) {
Debug.println("structuredDocumentChanged - regionChanged: " + structuredDocumentEvent); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.events.IStructuredDocumentListener#regionsReplaced(org.eclipse.wst.sse.core.events.RegionsReplacedEvent)
*/
public void regionsReplaced(RegionsReplacedEvent structuredDocumentEvent) {
Debug.println("structuredDocumentChanged - regionsReplaced: " + structuredDocumentEvent); //$NON-NLS-1$
}
}
private static EveryNodeDebugAdapter singletonInstance;
public static EveryNodeDebugAdapter getInstance() {
if (singletonInstance == null) {
singletonInstance = new EveryNodeDebugAdapter();
}
return singletonInstance;
}
InternalDocumentListener fInternalDocumentListener;
InternalModelStateListener fInternalModelStateListener;
InternalStructuredDocumentAboutToChange fInternalStructuredDocumentAboutToChange;
InternalStructuredDocumentListener fInternalStructuredDocumentListener;
IStructuredModel fModel;
/**
*
*/
public EveryNodeDebugAdapter() {
super();
fInternalDocumentListener = new InternalDocumentListener();
fInternalStructuredDocumentAboutToChange = new InternalStructuredDocumentAboutToChange();
fInternalStructuredDocumentListener = new InternalStructuredDocumentListener();
fInternalModelStateListener = new InternalModelStateListener();
}
/**
* @param target
*/
public EveryNodeDebugAdapter(INodeNotifier target) {
this();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.INodeAdapter#isAdapterForType(java.lang.Object)
*/
public boolean isAdapterForType(Object type) {
return (type == IDebugAdapter.class);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.INodeAdapter#notifyChanged(org.eclipse.wst.sse.core.INodeNotifier,
* int, java.lang.Object, java.lang.Object, java.lang.Object, int)
*/
public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
if (notifier instanceof IDOMNode) {
setModel(((IDOMNode) notifier).getModel());
}
Debug.println("notifier: " + notifier + " " + INodeNotifier.EVENT_TYPE_STRINGS[eventType] + " changedFeature: " + changedFeature + " oldValue: " + oldValue + " newValue: " + newValue + " pos: " + pos); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.core.internal.IDebugAdapter#setDocument(org.eclipse.wst.sse.core.text.IStructuredDocument)
*/
private void setModel(IStructuredModel structuredModel) {
if (fModel == structuredModel)
return;
if (fModel != null) {
fModel.removeModelStateListener(fInternalModelStateListener);
//
IStructuredDocument structuredDocument = fModel.getStructuredDocument();
if (structuredDocument != null) {
structuredDocument.removeDocumentListener(fInternalDocumentListener);
structuredDocument.removeDocumentAboutToChangeListener(fInternalStructuredDocumentAboutToChange);
structuredDocument.removeDocumentChangedListener(fInternalStructuredDocumentListener);
}
}
fModel = structuredModel;
if (fModel != null) {
fModel.addModelStateListener(fInternalModelStateListener);
//
IStructuredDocument structuredDocument = fModel.getStructuredDocument();
if (structuredDocument != null) {
structuredDocument.addDocumentListener(fInternalDocumentListener);
structuredDocument.addDocumentAboutToChangeListener(fInternalStructuredDocumentAboutToChange);
structuredDocument.addDocumentChangedListener(fInternalStructuredDocumentListener);
}
}
}
}