| /******************************************************************************* |
| * 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.validation.caret; |
| |
| import org.eclipse.core.runtime.Assert; |
| import org.eclipse.gef.EditPart; |
| import org.eclipse.jst.jsf.common.dom.TagIdentifier; |
| import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory; |
| import org.eclipse.jst.pagedesigner.converter.ITagConverter; |
| import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.Node; |
| |
| /** |
| * @author mengbo |
| */ |
| public class Target { |
| private EditPart _part; |
| |
| private Node _node; |
| |
| /** |
| * @param part |
| */ |
| public Target(EditPart part) { |
| _part = part; |
| |
| if(part.getModel() instanceof Node) |
| { |
| _node = (Node) part.getModel(); |
| } |
| else if (part.getModel() instanceof ITagConverter) |
| { |
| _node = ((ITagConverter)part.getModel()).getHostElement(); |
| } |
| else |
| { |
| Assert.isTrue(false); |
| } |
| } |
| |
| /** |
| * @param node |
| */ |
| public Target(Node node) { |
| _node = node; |
| Assert.isTrue(node instanceof INodeNotifier); |
| if (((INodeNotifier) node).getAdapterFor(EditPart.class) != null) { |
| _part = (EditPart) ((INodeNotifier) node) |
| .getAdapterFor(EditPart.class); |
| } |
| } |
| |
| /** |
| * @return Returns the _node. |
| */ |
| public Node getNode() { |
| return _node; |
| } |
| |
| /** |
| * @return Returns the _part. |
| */ |
| public EditPart getPart() { |
| return _part; |
| } |
| |
| /** |
| * @return the target's tag wrapper or null if the target |
| * is not an Element node |
| */ |
| public TagIdentifier getTagWrapper() |
| { |
| if (_node instanceof Element) |
| { |
| return TagIdentifierFactory.createDocumentTagWrapper((Element)_node); |
| } |
| |
| return null; |
| } |
| |
| /** |
| * @param node |
| * @return the edit part for node or null if none found |
| */ |
| public static EditPart resolvePart(Node node) { |
| if (node instanceof INodeNotifier |
| && ((INodeNotifier) node).getAdapterFor(EditPart.class) != null) { |
| return (EditPart) ((INodeNotifier) node) |
| .getAdapterFor(EditPart.class); |
| } |
| return null; |
| } |
| |
| /** |
| * @param part |
| * @return the node for part |
| */ |
| public static Node resolveNode(EditPart part) { |
| return (Node) part.getModel(); |
| } |
| } |