| /******************************************************************************* |
| * Copyright (c) 2001, 2006 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.xsd.ui.internal.common.properties.sections; |
| |
| import org.eclipse.gef.commands.Command; |
| import org.eclipse.gef.commands.CommandStack; |
| import org.eclipse.jface.action.Action; |
| import org.eclipse.jface.action.IMenuManager; |
| import org.eclipse.jface.viewers.Viewer; |
| import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; |
| import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration; |
| import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType; |
| import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration; |
| import org.eclipse.wst.xml.ui.internal.XMLUIMessages; |
| import org.eclipse.wst.xml.ui.internal.actions.EditAttributeAction; |
| import org.eclipse.wst.xml.ui.internal.contentoutline.XMLNodeActionManager; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.Node; |
| |
| public class XSDActionManager extends XMLNodeActionManager { |
| |
| private CommandStack commandStack; |
| |
| public XSDActionManager(IStructuredModel model, Viewer viewer) { |
| super(model, viewer); |
| } |
| |
| public void setCommandStack(CommandStack commandStack) { |
| this.commandStack = commandStack; |
| } |
| |
| protected Action createAddCDataSectionAction(Node parent, int index) |
| { |
| return null; |
| } |
| |
| protected Action createAddPCDataAction(Node parent, CMDataType dataType, int index) { |
| return null; |
| } |
| |
| |
| protected void contributeAddDocumentChildActions(IMenuManager menu, Document document, int ic, int vc) { |
| } |
| |
| protected void contributeEditGrammarInformationActions(IMenuManager menu, Node node) { |
| } |
| |
| protected void contributePIAndCommentActions(IMenuManager menu, Document document, int index) { |
| } |
| |
| protected void contributePIAndCommentActions(IMenuManager menu, Element parentElement, CMElementDeclaration parentEd, int index) { |
| } |
| |
| protected void contributeTextNodeActions(IMenuManager menu, Element parentElement, CMElementDeclaration parentEd, int index) { |
| super.contributeTextNodeActions(menu, parentElement, parentEd, index); |
| } |
| |
| protected Action createAddAttributeAction(Element parent, CMAttributeDeclaration ad) { |
| Action action = null; |
| if (ad == null) { |
| action = new EditAttributeAction(this, parent, null, XMLUIMessages._UI_MENU_NEW_ATTRIBUTE, XMLUIMessages._UI_MENU_NEW_ATTRIBUTE_TITLE); //$NON-NLS-1$ //$NON-NLS-2$ |
| } else { |
| action = new AddNodeAction(ad, parent, -1); |
| } |
| |
| WrapperCommand command = new WrapperCommand(action, parent, ad); |
| WrapperAction wrapperAction = new WrapperAction(command); |
| return wrapperAction; |
| } |
| |
| class WrapperAction extends Action |
| { |
| WrapperCommand command; |
| |
| public WrapperAction(WrapperCommand command) |
| { |
| super(); |
| this.command = command; |
| } |
| |
| public String getText() |
| { |
| return command.getAction().getText(); |
| } |
| |
| public void run() |
| { |
| // Some editors may not use a command stack |
| if (commandStack != null) |
| { |
| commandStack.execute(command); |
| } |
| else |
| { |
| command.execute(); |
| } |
| } |
| } |
| |
| class WrapperCommand extends Command |
| { |
| Action action; |
| Element parent; |
| CMAttributeDeclaration ad; |
| public WrapperCommand(Action action, Element parent, CMAttributeDeclaration ad) |
| { |
| super(); |
| this.action = action; |
| this.parent = parent; |
| this.ad = ad; |
| } |
| |
| public String getLabel() |
| { |
| return action.getText(); |
| } |
| |
| public Action getAction() |
| { |
| return action; |
| } |
| |
| public void execute() |
| { |
| action.run(); |
| } |
| |
| public void undo() { |
| |
| // ((Element)parent).removeAttribute(ad.getAttrName()); |
| |
| getModel().getUndoManager().undo(); |
| |
| } |
| |
| |
| } |
| |
| } |