/******************************************************************************* * 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(); } }