diff options
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMRangeHelper.java')
-rw-r--r-- | jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMRangeHelper.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMRangeHelper.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMRangeHelper.java new file mode 100644 index 000000000..238c5bb90 --- /dev/null +++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/DOMRangeHelper.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2006 Sybase, Inc. 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: + * Sybase, Inc. - initial API and implementation + *******************************************************************************/ +package org.eclipse.jst.pagedesigner.dom; + +import org.eclipse.jst.pagedesigner.viewer.DesignPosition; +import org.eclipse.jst.pagedesigner.viewer.DesignRange; +import org.w3c.dom.Node; + +/** + * @author mengbo + */ +public class DOMRangeHelper { + public static DOMRange toDOMRange(DesignRange range) { + if (range.getStartPosition() == range.getEndPosition()) { + IDOMPosition dp = DOMPositionHelper.toDOMPosition(range + .getStartPosition()); + return new DOMRange(dp, dp); + } else + return new DOMRange(DOMPositionHelper.toDOMPosition(range + .getStartPosition()), DOMPositionHelper.toDOMPosition(range + .getEndPosition())); + } + + public static DesignRange toDesignRange(DOMRange range) { + if (range.getStartPosition() == range.getEndPosition()) { + DesignPosition dp = DOMPositionHelper.toDesignPosition(range + .getStartPosition()); + return new DesignRange(dp, dp); + } + return new DesignRange(DOMPositionHelper.toDesignPosition(range + .getStartPosition()), DOMPositionHelper.toDesignPosition(range + .getEndPosition())); + } + + public static DOMRange handleReplacement(DOMRange range, Node original, + Node replacement) { + if (range.getStartPosition() == range.getEndPosition()) { + IDOMPosition pos = range.getStartPosition().handleReplacement( + original, replacement); + return new DOMRange(pos, pos); + } else { + return new DOMRange(range.getStartPosition().handleReplacement( + original, replacement), range.getEndPosition() + .handleReplacement(original, replacement)); + } + } +} |