| /*=============================================================================# |
| # Copyright (c) 2012, 2021 Original NatTable authors and others. |
| # |
| # This program and the accompanying materials are made available under the |
| # terms of the Eclipse Public License 2.0 which is available at |
| # https://www.eclipse.org/legal/epl-2.0. |
| # |
| # SPDX-License-Identifier: EPL-2.0 |
| # |
| # Contributors: |
| # Original NatTable authors and others - initial API and implementation |
| #=============================================================================*/ |
| |
| package org.eclipse.statet.ecommons.waltable.coordinate; |
| |
| import static org.eclipse.statet.ecommons.waltable.coordinate.Orientation.HORIZONTAL; |
| import static org.eclipse.statet.ecommons.waltable.coordinate.Orientation.VERTICAL; |
| |
| |
| public enum Direction { |
| |
| |
| LEFT (HORIZONTAL), |
| RIGHT (HORIZONTAL), |
| UP (VERTICAL), |
| DOWN (VERTICAL); |
| |
| |
| public static Direction backward(final Orientation orientation) { |
| if (orientation == null) { |
| throw new NullPointerException("orientation"); //$NON-NLS-1$ |
| } |
| return (orientation == HORIZONTAL) ? LEFT : UP; |
| } |
| |
| public static Direction forward(final Orientation orientation) { |
| if (orientation == null) { |
| throw new NullPointerException("orientation"); //$NON-NLS-1$ |
| } |
| return (orientation == HORIZONTAL) ? RIGHT : LEFT; |
| } |
| |
| |
| private final Orientation orientation; |
| |
| |
| private Direction(final Orientation orientation) { |
| this.orientation= orientation; |
| } |
| |
| |
| public Orientation getOrientation() { |
| return this.orientation; |
| } |
| |
| public boolean isBackward() { |
| switch (this) { |
| case LEFT: |
| case UP: |
| return true; |
| case RIGHT: |
| case DOWN: |
| default: |
| return false; |
| } |
| } |
| |
| public boolean isForward() { |
| switch (this) { |
| case RIGHT: |
| case DOWN: |
| return true; |
| case LEFT: |
| case UP: |
| default: |
| return false; |
| } |
| } |
| |
| public Direction getOpposite() { |
| switch (this) { |
| case LEFT: |
| return RIGHT; |
| case RIGHT: |
| return LEFT; |
| case UP: |
| return DOWN; |
| case DOWN: |
| default: |
| return UP; |
| } |
| } |
| |
| } |