/*******************************************************************************
* Copyright (c) 2011 Wind River Systems, Inc. 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.tcf.te.ui.controls.validator;
import java.text.MessageFormat;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.osgi.framework.Bundle;
/**
* Validates a given path to be a workspace path.
* <p>
* <b>Note:</b> This validator is useful only if the Eclipse resources plugin is installed.
*/
public class WorkspaceContainerValidator extends Validator {
// keys for info messages
public static final String INFO_MISSING_VALUE = "WorkspaceContainerValidator_Information_MissingValue"; //$NON-NLS-1$
// keys for error messages
public static final String ERROR_INVALID_VALUE = "WorkspaceContainerValidator_Error_InvalidValue"; //$NON-NLS-1$
/**
* Constructor
*
* @param attributes The validator attributes.
*/
public WorkspaceContainerValidator(int attributes) {
super(attributes);
}
/* (non-Javadoc)
* @see org.eclipse.tcf.te.ui.controls.validator.Validator#isValid(java.lang.String)
*/
@Override
public boolean isValid(String newText) {
init();
// info message when value is empty and mandatory
if (newText == null || newText.trim().length() == 0) {
if (isAttribute(ATTR_MANDATORY)) {
setMessage(getMessageText(INFO_MISSING_VALUE), getMessageTextType(INFO_MISSING_VALUE, INFORMATION));
return false;
}
return true;
}
if (Platform.getBundle("org.eclipse.core.resources") != null //$NON-NLS-1$
&& Platform.getBundle("org.eclipse.core.resources").getState() == Bundle.ACTIVE) { //$NON-NLS-1$
IStatus status = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().validatePath(newText.trim(), org.eclipse.core.resources.IResource.FOLDER | org.eclipse.core.resources.IResource.PROJECT);
if (status.getSeverity() != IStatus.OK) {
// Try to format the returned message with the information returned
// to use by the status object.
setMessage(MessageFormat.format(getMessageText(ERROR_INVALID_VALUE), new Object[] { status.getMessage() }), getMessageTextType(ERROR_INVALID_VALUE, ERROR));
return getMessageType() != ERROR;
}
}
return true;
}
}