| /******************************************************************************* |
| * 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. When clients are getting |
| * the DOMObserverAdapter, they should only call |
| * INodeNotifier.getExistingAdapter(). Attempting to create their own new |
| * DOMObserverAdapter will not work since there will be no associated |
| * DOMObserver. |
| */ |
| 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(); |
| } |
| } |