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

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

/*******************************************************************************
* 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.draw2d.ColorConstants;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.geometry.Rectangle;

import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.LayerConstants;
import org.eclipse.gef.editpolicies.ResizableEditPolicy;

import org.eclipse.gef.examples.logicdesigner.figures.AndGateFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.figures.CircuitFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.figures.GroundFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.figures.LEDFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.figures.LabelFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.figures.LiveOutputFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.figures.LogicColorConstants;
import org.eclipse.gef.examples.logicdesigner.figures.LogicFlowFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.figures.OrGateFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.figures.XOrGateFeedbackFigure;
import org.eclipse.gef.examples.logicdesigner.model.AndGate;
import org.eclipse.gef.examples.logicdesigner.model.Circuit;
import org.eclipse.gef.examples.logicdesigner.model.GroundOutput;
import org.eclipse.gef.examples.logicdesigner.model.LED;
import org.eclipse.gef.examples.logicdesigner.model.LiveOutput;
import org.eclipse.gef.examples.logicdesigner.model.LogicFlowContainer;
import org.eclipse.gef.examples.logicdesigner.model.LogicLabel;
import org.eclipse.gef.examples.logicdesigner.model.OrGate;
import org.eclipse.gef.examples.logicdesigner.model.XORGate;


/**
*
*/
public class LogicResizableEditPolicy
  extends ResizableEditPolicy
{

/**
* Creates the figure used for feedback.
* @return the new feedback figure
*/
protected IFigure createDragSourceFeedbackFigure() {
  IFigure figure = createFigure((GraphicalEditPart)getHost(), null);
 
  figure.setBounds(getInitialFeedbackBounds());
  addFeedback(figure);
  return figure;
}

protected IFigure createFigure(GraphicalEditPart part, IFigure parent) {
  IFigure child = getCustomFeedbackFigure(part.getModel());
   
  if (parent != null)
    parent.add(child);

  Rectangle childBounds = part.getFigure().getBounds().getCopy();
 
  IFigure walker = part.getFigure().getParent();
 
  while (walker != ((GraphicalEditPart)part.getParent()).getFigure()) {
    walker.translateToParent(childBounds);
    walker = walker.getParent();
  }
 
  child.setBounds(childBounds);
 
  Iterator i = part.getChildren().iterator();
 
  while (i.hasNext())
    createFigure((GraphicalEditPart)i.next(), child);
 
  return child;
}

protected IFigure getCustomFeedbackFigure(Object modelPart) {
  IFigure figure;
 
  if (modelPart instanceof Circuit)
    figure = new CircuitFeedbackFigure();
  else if (modelPart instanceof LogicFlowContainer)
    figure = new LogicFlowFeedbackFigure();   
  else if (modelPart instanceof LogicLabel)
    figure = new LabelFeedbackFigure();
  else if (modelPart instanceof LED)
    figure = new LEDFeedbackFigure();
  else if (modelPart instanceof OrGate)
    figure = new OrGateFeedbackFigure();
  else if (modelPart instanceof XORGate)
    figure = new XOrGateFeedbackFigure();
  else if (modelPart instanceof GroundOutput)
    figure = new GroundFeedbackFigure();
  else if (modelPart instanceof LiveOutput)
    figure = new LiveOutputFeedbackFigure();
  else if (modelPart instanceof AndGate)
    figure = new AndGateFeedbackFigure();
  else {
    figure = new RectangleFigure();
    ((RectangleFigure)figure).setXOR(true);
    ((RectangleFigure)figure).setFill(true);
    figure.setBackgroundColor(LogicColorConstants.ghostFillColor);
    figure.setForegroundColor(ColorConstants.white);
  }
 
  return figure;
}

/**
* Returns the layer used for displaying feedback.
* @return the feedback layer
*/
protected IFigure getFeedbackLayer() {
  return getLayer(LayerConstants.SCALED_FEEDBACK_LAYER);
}

/**
* @see org.eclipse.gef.editpolicies.NonResizableEditPolicy#getInitialFeedbackBounds()
*/
protected Rectangle getInitialFeedbackBounds() {
  return getHostFigure().getBounds();
}

}
TOP

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

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.