package net.ms.designer.editors.componentdetail.actions; import java.util.List; import net.ms.designer.editors.componentdetail.ComponentdetailPlugin; import net.ms.designer.editors.componentdetail.models.ChildTable; import net.ms.designer.editors.componentdetail.models.CommonField; import net.ms.designer.editors.componentdetail.models.ComponentTable; import net.ms.designer.editors.componentdetail.models.Table; import org.eclipse.gef.EditPart; import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; import org.eclipse.gef.commands.CompoundCommand; import org.eclipse.gef.ui.actions.SelectionAction; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IWorkbenchPart; public class PropertyAction extends SelectionAction { private static final String COPY_REQUEST = "COPY"; //$NON-NLS-1$ public static final String C = "COP"; //$NON-NLS-1$ Request request; public PropertyAction(IWorkbenchPart part) { super(part); request = new Request(COPY_REQUEST); setText("Property"); setId(C); setImageDescriptor(ImageDescriptor.createFromFile(ComponentdetailPlugin.class,"/icons/bringback.gif")); //$NON-NLS-1$ setHoverImageDescriptor(getImageDescriptor()); } protected boolean calculateEnabled() { //System.out.println(canPerformAction()); return canPerformAction(); } private boolean canPerformAction() { if (getSelectedObjects().isEmpty()) return false; List parts = getSelectedObjects(); //System.out.println("getSelectedObjects()"); for (int i=0; i<parts.size(); i++) { Object o = parts.get(i); if (!(o instanceof EditPart)) return false; EditPart part = (EditPart)o; // This menu item will only be activated if an object of Typ "Example" is selected. if (!(part.getModel() instanceof Table)&&!(part.getModel() instanceof CommonField)) { //System.out.println("actions.PropertyAction.canPerformAction()"); return false; } } return true; } //What happened for this action is defined by the edit part of this object. private Command getCommand() { List editparts = getSelectedObjects(); CompoundCommand cc = new CompoundCommand(); cc.setDebugLabel("debug");//$NON-NLS-1$ for (int i=0; i < editparts.size(); i++) { EditPart part = (EditPart)editparts.get(i); cc.add(part.getCommand(request)); } return cc; } public void run() { execute(getCommand()); } }