blob: 415ca927622ce82d771870b455f493e28a396609 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
* Angelo Zerr <angelo.zerr@gmail.com> - copied from org.eclipse.wst.xml.core.internal.document.XMLModelNotifier
* modified in order to process JSON Objects.
*******************************************************************************/
package org.eclipse.wst.json.core.internal.document;
import org.eclipse.wst.json.core.document.IJSONNode;
import org.eclipse.wst.json.core.document.IJSONObject;
import org.eclipse.wst.json.core.document.IJSONPair;
/**
*
* JSONModelNotifier manages the notification process. Clients should not use
* extend or reference.
*
* ISSUE: should be internalized.
*/
public interface JSONModelNotifier {
/**
* attrReplaced method
*
* @param element
* org.w3c.dom.Element
* @param newAttr
* org.w3c.dom.Attr
* @param oldAttr
* org.w3c.dom.Attr
*/
void pairReplaced(IJSONObject element, IJSONPair newAttr, IJSONPair oldAttr);
/**
* Signal that changing is starting.
*
*/
void beginChanging();
/**
* Signal that changing is starting with a brand new model.
*
*/
void beginChanging(boolean newModel);
/**
* Cancel pending notifications. This is called in the context of
* "reinitialization" so is assumed ALL notifications can be safely
* canceled, assuming that once factories and adapters are re-initialized
* they will be re-notified as text is set in model, if still appropriate.
*/
void cancelPending();
void childReplaced(IJSONNode parentNode, IJSONNode newChild,
IJSONNode oldChild);
/**
* Editable state changed for node.
*
*/
// void editableChanged(Node node);
/**
* Signal changing is finished.
*
*/
void endChanging();
/**
* Signal end tag changed.
*
* @param element
*
*/
void endTagChanged(IJSONObject element);
/**
* Used to reflect state of model.
*
* @return true if model had changed.
*
*/
boolean hasChanged();
/**
* Used to reflect state of parsing process.
*
* @return true if model is currently changing.
*/
boolean isChanging();
/**
* signal property changed
*
* @param node
*/
void propertyChanged(IJSONNode node);
/**
* signal start tag changed
*
* @param element
*/
void startTagChanged(IJSONObject element);
/**
* signal structured changed.
*
* @param node
*/
void structureChanged(IJSONNode node);
/**
* valueChanged method
*
* @param node
* org.w3c.dom.Node
*/
void valueChanged(IJSONNode node);
}