/*******************************************************************************
* Copyright (c) 2013, 2015 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:
* René Brandstetter - Bug 411821 - [QuickAccess] Contribute SearchField
* through a fragment or other means
******************************************************************************/
package org.eclipse.e4.ui.model.internal;
/**
* All the possible positioning values which can be used to contribute
* elements into the wanted place of a list.
*
* @author René Brandstetter
*/
public enum Position {
/** Add an element to the end of a list (absolute positioning). */
LAST("last"),
/** Add an element at the beginning of a list (absolute positioning). */
FIRST("first"),
/** Add an element before another named element (relative positioning). */
BEFORE("before:"),
/** Add an element after a named element (relative positioning). */
AFTER("after:"),
/** Add an element at a specific index (absolute positioning). */
INDEX("index:");
/** The prefix of the enum which is used in the positioning string. */
final String prefix;
private Position(String prefix) {
assert prefix != null : "Prefix required!";
this.prefix = prefix;
}
/**
* Find the {@link Position} enum value used in the given positioning
* string.
*
* @param positionInfo
* the positioning string (can be <code>null</code>, which would
* result in <code>null</code>)
* @return the {@link Position} which is mentioned in the positioning
* string, or <code>null</code> if none can be found
*/
public static final Position find(String positionInfo) {
if (positionInfo == null || positionInfo.length() <= 0)
return null;
for (Position position : Position.values()) {
if (positionInfo.startsWith(position.prefix))
return position;
}
return null;
}
}