| /******************************************************************************* |
| * Copyright (c) 2001, 2004 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.wsdl.ui.internal.actions; |
| |
| import java.util.Iterator; |
| import java.util.List; |
| import java.util.Vector; |
| |
| import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin; |
| import org.w3c.dom.Attr; |
| import org.w3c.dom.Node; |
| |
| |
| public class DeleteNodeAction extends BaseNodeAction |
| { |
| protected List list; |
| |
| public DeleteNodeAction(Node node) |
| { |
| setText(WSDLEditorPlugin.getWSDLString("_UI_ACTION_DELETE")); //$NON-NLS-1$ |
| list = new Vector(); |
| list.add(node); |
| } |
| |
| public DeleteNodeAction(List nodeList) |
| { |
| setText(WSDLEditorPlugin.getWSDLString("_UI_ACTION_DELETE")); //$NON-NLS-1$ |
| list = new Vector(); |
| Iterator it = nodeList.iterator(); |
| while (it.hasNext()) { |
| list.add(it.next()); |
| } |
| } |
| |
| public void run() |
| { |
| beginRecording(); |
| |
| for (Iterator i = list.iterator(); i.hasNext(); ) |
| { |
| Node node = (Node)i.next(); |
| if (node.getNodeType() == Node.ATTRIBUTE_NODE) |
| { |
| Attr attr = (Attr)node; |
| attr.getOwnerElement().removeAttributeNode(attr); |
| } |
| else |
| { |
| Node parent = node.getParentNode(); |
| if (parent != null) |
| { |
| Node previousSibling = node.getPreviousSibling(); |
| if (previousSibling != null && isWhitespaceTextNode(previousSibling)) |
| { |
| parent.removeChild(previousSibling); |
| } |
| parent.removeChild(node); |
| } |
| } |
| } |
| |
| endRecording(); |
| } |
| |
| protected boolean isWhitespaceTextNode(Node node) |
| { |
| return (node != null) && (node.getNodeType() == Node.TEXT_NODE) && (node.getNodeValue().trim().length() == 0); |
| } |
| |
| public Node getNode() |
| { |
| return list.size() > 0 ? (Node)list.get(0) : null; |
| } |
| |
| public String getUndoDescription() |
| { |
| return WSDLEditorPlugin.getWSDLString("_UI_ACTION_DELETE"); //$NON-NLS-1$ |
| } |
| } |