Package org.eclipse.gef.examples.logicdesigner.edit

Source Code of org.eclipse.gef.examples.logicdesigner.edit.LogicFlowEditPolicy

/*******************************************************************************
* Copyright (c) 2000, 2005 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.gef.examples.logicdesigner.edit;


import java.util.Iterator;

import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.RequestConstants;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.requests.ChangeBoundsRequest;
import org.eclipse.gef.requests.CreateRequest;

import org.eclipse.gef.examples.logicdesigner.model.LogicDiagram;
import org.eclipse.gef.examples.logicdesigner.model.LogicFlowContainer;
import org.eclipse.gef.examples.logicdesigner.model.LogicSubpart;
import org.eclipse.gef.examples.logicdesigner.model.commands.AddCommand;
import org.eclipse.gef.examples.logicdesigner.model.commands.CloneCommand;
import org.eclipse.gef.examples.logicdesigner.model.commands.CreateCommand;
import org.eclipse.gef.examples.logicdesigner.model.commands.ReorderPartCommand;

public class LogicFlowEditPolicy
  extends org.eclipse.gef.editpolicies.FlowLayoutEditPolicy
{

/**
* Override to return the <code>Command</code> to perform an {@link
* RequestConstants#REQ_CLONE CLONE}. By default, <code>null</code> is
* returned.
* @param request the Clone Request
* @return A command to perform the Clone.
*/
protected Command getCloneCommand(ChangeBoundsRequest request) {
  CloneCommand clone = new CloneCommand();
  clone.setParent((LogicDiagram)getHost().getModel());
 
  EditPart after = getInsertionReference(request);
  int index = getHost().getChildren().indexOf(after);
 
  Iterator i = request.getEditParts().iterator();
  GraphicalEditPart currPart = null;
 
  while (i.hasNext()) {
    currPart = (GraphicalEditPart)i.next();
    clone.addPart((LogicSubpart)currPart.getModel(), index++);
  }
 
  return clone;
}
 
protected Command createAddCommand(EditPart child, EditPart after) {
  AddCommand command = new AddCommand();
  command.setChild((LogicSubpart)child.getModel());
  command.setParent((LogicFlowContainer)getHost().getModel());
  int index = getHost().getChildren().indexOf(after);
  command.setIndex(index);
  return command;
}

/**
* @see org.eclipse.gef.editpolicies.LayoutEditPolicy#createChildEditPolicy(org.eclipse.gef.EditPart)
*/
protected EditPolicy createChildEditPolicy(EditPart child) {
  LogicResizableEditPolicy policy = new LogicResizableEditPolicy();
  policy.setResizeDirections(0);
  return policy;
}

protected Command createMoveChildCommand(EditPart child, EditPart after) {
  LogicSubpart childModel = (LogicSubpart)child.getModel();
  LogicDiagram parentModel = (LogicDiagram)getHost().getModel();
  int oldIndex = getHost().getChildren().indexOf(child);
  int newIndex = getHost().getChildren().indexOf(after);
  if (newIndex > oldIndex)
    newIndex--;
  ReorderPartCommand command = new ReorderPartCommand(childModel, parentModel, newIndex);
  return command;
}

protected Command getCreateCommand(CreateRequest request) {
  CreateCommand command = new CreateCommand();
  EditPart after = getInsertionReference(request);
  command.setChild((LogicSubpart)request.getNewObject());
  command.setParent((LogicFlowContainer)getHost().getModel());
  int index = getHost().getChildren().indexOf(after);
  command.setIndex(index);
  return command;
}

}
TOP

Related Classes of org.eclipse.gef.examples.logicdesigner.edit.LogicFlowEditPolicy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.