/******************************************************************************* * Copyright (c) 2005, 2012 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.bpel.ui.figures; /** * This is a hack to get the vertical connection lines perfectly * straight. Relies on assumption * that vertical lines are sometimes crooked by 1 pixel depending * on the magnification. */ public class ConnectionCoordHistory { private static ConnectionCoordHistory instance; // x-coord of 1st anchor in aligned vertical parts private static int firstX = 0; // y-coord of 1st anchor in aligned horizontal parts private static int firstY = 0; private ConnectionCoordHistory(){} public static ConnectionCoordHistory getInstance() { if (instance == null) instance = new ConnectionCoordHistory(); return instance; } public int adjustX(int x){ if (firstX ==0 ){ firstX = x; return x; }else if (Math.abs(firstX - x) > 2){ /* assume any anchor point outside 2px of firstX means * that the anchor is at the start of a new container */ firstX = x; return x; } return firstX; } public int adjustY(int y){ if (firstY ==0 ){ firstY = y; return y; }else if (Math.abs(firstY - y) > 2){ /* assume any anchor point outside 2px of firstY means * that the anchor is at the start of a new container */ firstY = y; return y; } return firstY; } }