/******************************************************************************* * Copyright (c) 2007- VTT Technical Research Centre of Finland. * 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: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.proconf.g3d.actions; import java.util.List; import org.simantics.db.Graph; import org.simantics.db.GraphRequestStatus; import org.simantics.db.Resource; import org.simantics.layer0.utils.IEntity; import org.simantics.layer0.utils.EntityFactory; import org.simantics.proconf.g3d.Activator; import org.simantics.proconf.g3d.Resources; import org.simantics.proconf.g3d.base.ThreeDimensionalEditorBase; import org.simantics.proconf.g3d.common.StructuredResourceSelection; public class RemoveAction extends WriteAction { public RemoveAction(ThreeDimensionalEditorBase parent) { super(parent,false); } public void init() { setText("Remove"); setToolTipText("Remove the object"); this.setImageDescriptor(Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/delete.png")); } public GraphRequestStatus doChanges(Graph graph) { StructuredResourceSelection sel = parent.getSelectionAdapter().getCurrentSelection(); List res = sel.getSelectionList(); for (Resource r : res) { IEntity t = EntityFactory.create(graph, r); if (t.isInstanceOf(Resources.g3dResource.G3DNode)) { IEntity parentNode = t.getSingleRelatedObject(Resources.g3dResource.HasParent); parentNode.removeStatement(Resources.g3dResource.HasChild, t); } } return GraphRequestStatus.transactionComplete(); } @Override public boolean usable(Graph graph,List resources) { return resources.size() > 0; } }