/* * Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved. * * This program and the accompanying materials are made available * under the terms of the Eclipse Public License, Version 1.0, * which accompanies this distribution and is available at * * http://www.eclipse.org/legal/epl-v10.html * */ package net.rim.ejde.internal.ui.editors.locale; import java.util.Vector; import org.eclipse.jface.viewers.ICellEditorListener; import org.eclipse.jface.viewers.ICellEditorValidator; class ResourceCellEditor implements IResourceCellEditor { private String _errorMessage; private Vector< ICellEditorListener > _listeners; private ICellEditorValidator _validator; private Object _value; ResourceCellEditor( Object value ) { _value = value; _listeners = new Vector< ICellEditorListener >(); } public void addListener( ICellEditorListener listener ) { if( listener == null ) { throw new NullPointerException(); } if( !_listeners.contains( listener ) ) { _listeners.add( listener ); } } public String getErrorMessage() { return _errorMessage; } public void apply() { fireApplyEvent(); } public void cancel() { fireCancelEvent(); } public void changeValue( Object value ) { boolean oldValidState = isValueValid(); boolean newValidState = true; _value = value; _errorMessage = null; if( _validator != null ) { _errorMessage = _validator.isValid( value ); newValidState = isValueValid(); } fireValueChangedEvent( oldValidState, newValidState ); } public Object getValue() { if( isValueValid() ) { return _value; } return null; } public void removeListener( ICellEditorListener listener ) { _listeners.remove( listener ); } public void setValidator( ICellEditorValidator validator ) { _validator = validator; } private void fireApplyEvent() { for( ICellEditorListener listener : _listeners ) { listener.applyEditorValue(); } } private void fireCancelEvent() { for( ICellEditorListener listener : _listeners ) { listener.cancelEditor(); } } private void fireValueChangedEvent( boolean oldValidState, boolean newValidState ) { for( ICellEditorListener listener : _listeners ) { listener.editorValueChanged( oldValidState, newValidState ); } } private boolean isValueValid() { return _errorMessage == null; } }