Package org.springframework.ide.eclipse.config.graph.model

Source Code of org.springframework.ide.eclipse.config.graph.model.Transition

/*******************************************************************************
*  Copyright (c) 2012 VMware, Inc.
*  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:
*      VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.config.graph.model;

import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.draw2d.Graphics;
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
import org.eclipse.wst.xml.ui.internal.properties.XMLPropertySource;

/**
* @author Leo Dos Santos
* @author Christian Dupuis
*/
@SuppressWarnings("restriction")
public class Transition extends AbstractGefGraphModelElement implements IAdaptable {

  public static final Integer SOLID_CONNECTION = new Integer(Graphics.LINE_SOLID);

  public static final Integer DASHED_CONNECTION = new Integer(Graphics.LINE_DASH);

  private int lineStyle;

  private boolean isDirectional;

  public Activity source, target;

  private IDOMNode input;

  public Transition(Activity source, Activity target) {
    this(source, target, null);
  }

  public Transition(Activity source, Activity target, IDOMNode input) {
    this(source, target, input, Graphics.LINE_SOLID, true);
  }

  public Transition(Activity source, Activity target, IDOMNode input, int style, boolean isDirectional) {
    this.input = input;
    this.source = source;
    this.target = target;
    this.isDirectional = isDirectional;
    lineStyle = style;

    // GEF will attempt to break cycles when it finds them, but neglects to
    // do so when an object cycles on itself. Here we detect if the source
    // and target are equal, and if so discard the transition. Doing so will
    // avoid a runtime exception.
    if (!source.equals(target)) {
      source.addOutgoing(this);
      target.addIncoming(this);
    }
  }

  public Transition(Activity source, Activity target, IDOMNode input, boolean isDirectional) {
    this(source, target, input, Graphics.LINE_SOLID, isDirectional);
  }

  public Transition(Activity source, Activity target, IDOMNode input, int style) {
    this(source, target, input, style, true);
  }

  @Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (!(obj instanceof Transition)) {
      return false;
    }
    Transition other = (Transition) obj;
    if (input == null) {
      if (other.input != null) {
        return false;
      }
    }
    else if (!input.equals(other.input)) {
      return false;
    }
    if (source == null) {
      if (other.source != null) {
        return false;
      }
    }
    else if (!source.equals(other.source)) {
      return false;
    }
    if (target == null) {
      if (other.target != null) {
        return false;
      }
    }
    else if (!target.equals(other.target)) {
      return false;
    }
    return true;
  }

  public Object getAdapter(Class adapter) {
    if (IPropertySource.class == adapter) {
      IPropertySource propertySource = (IPropertySource) input.getAdapterFor(IPropertySource.class);
      if (propertySource == null) {
        propertySource = new XMLPropertySource(input);
      }
      return propertySource;
    }
    return null;
  }

  public IDOMNode getInput() {
    return input;
  }

  public int getLineStyle() {
    return lineStyle;
  }

  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((input == null) ? 0 : input.hashCode());
    result = prime * result + ((source == null) ? 0 : source.hashCode());
    result = prime * result + ((target == null) ? 0 : target.hashCode());
    return result;
  }

  public boolean isDirectional() {
    return isDirectional;
  }

  public void setInput(IDOMNode input) {
    this.input = input;
  }

  public void setIsDirectional(boolean isDirectional) {
    this.isDirectional = isDirectional;
  }

  public void setLineStyle(int lineStyle) {
    if (lineStyle == Graphics.LINE_SOLID || lineStyle == Graphics.LINE_DASH) {
      this.lineStyle = lineStyle;
      firePropertyChange(LINESTYLE, null, new Integer(this.lineStyle));
    }
  }

}
TOP

Related Classes of org.springframework.ide.eclipse.config.graph.model.Transition

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.