/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.undo; import java.text.MessageFormat; import org.jboss.tools.common.model.*; import org.jboss.tools.common.model.icons.impl.XModelObjectIcon; public class XRemoveUndo extends XUndoableImpl { protected XModel model = null; protected String parentpath = null; protected String childpath = null; protected XModelObject child = null; public XRemoveUndo(XModelObject parent, XModelObject child) { this.model = parent.getModel(); parentpath = parent.getPath(); childpath = child.getPathPart(); this.child = child.copy(false); description = MessageFormat.format("{0} {1} in {2} {3}", child.getAttributeValue(XModelObjectConstants.ATTR_ELEMENT_TYPE), child.getModelEntity().getRenderer().getTitle(child), parent.getAttributeValue(XModelObjectConstants.ATTR_ELEMENT_TYPE), parent.getModelEntity().getRenderer().getTitle(parent)); String[] types = child.getModelEntity().getRenderer().getIconNames(); String iconType = types.length == 0 ? "main" : child.getModelEntity().getRenderer().getIconNames()[0]; //$NON-NLS-1$ icon = new XModelObjectIcon(child).getEclipseImage0(new String[]{iconType}); kind = REMOVE; } public void doUndo() { XModelObject parent = model.getByPath(parentpath); if(child != null) { parent.addChild(child); child.setModified(true); } } public void doRedo() { XModelObject parent = model.getByPath(parentpath); if(parent == null) return; XModelObject c = parent.getChildByPath(childpath); if(c != null) { parent.removeChild(c); parent.setModified(true); child = c.copy(false); } } }