/*******************************************************************************
* Copyright (c) 2009 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
*******************************************************************************/
package org.eclipse.wst.xml.ui.internal;
import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
/**
* This is just an adapter that sits on a document node to allow clients limited access to the
* DOMObserver. Clients who handle their own content model document loading (as opposed to letting
* the DOMObserver do it) may use this class to stop the DOMObserver from loading and possibly
* interfering with the client's document loading.
*/
public class DOMObserverAdapter implements INodeAdapter {
private DOMObserver fObserver = null;
public boolean isAdapterForType(Object type) {
return type == DOMObserverAdapter.class;
}
public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature,
Object oldValue, Object newValue, int pos) {
// do nothing
}
/**
* The DOMObserver is the one that adds the adapter to the document node, so it'll set itself up
* here as well.
*
* @param observer
*/
void setDOMObserver(DOMObserver observer) {
fObserver = observer;
}
/**
* Disable the DOMObserver to prevent it from future content model loading for this document.
*
* @param disable true if caller wants DOMObserver disabled. false if caller wants DOMObserver
* enabled.
* @param force if true, DOMObserver will forcibly be disabled (if the DOMObserver model loading
* job is scheduled, it will be cancelled)
* @return true if DOMObserver was successfully disabled. false if DOMObserver was already in the
* process of loading and was unable to stop
*/
public boolean disableObserver(boolean disable, boolean force) {
return fObserver.setDisabled(disable, force);
}
/**
* Returns whether or not DOMObserver is currently attempting to load the content model.
*
* @return true if DOMObserver is currently in the process of loading the content models. false
* otherwise.
*/
public boolean isObserverLoading() {
return fObserver.isLoading();
}
}