blob: 1bdb5bdcc08ce1bc37edbd27248bbb0d1a56626f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2008 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:
* Junji MAEDA - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.visualization.engines.lowvision.problem;
import org.eclipse.actf.visualization.engines.lowvision.LowVisionType;
import org.eclipse.actf.visualization.engines.lowvision.PageElement;
import org.eclipse.actf.visualization.engines.lowvision.character.CharacterMS;
import org.eclipse.actf.visualization.engines.lowvision.character.CharacterSM;
import org.eclipse.actf.visualization.engines.lowvision.character.CharacterSS;
import org.eclipse.actf.visualization.engines.lowvision.image.PageComponent;
import org.eclipse.actf.visualization.engines.lowvision.internal.Messages;
public class ColorProblem extends LowVisionProblem{
private int foregroundColor = -1;
private int backgroundColor = -1;
public ColorProblem( PageComponent _pc, LowVisionType _lvType, double _proba ) throws LowVisionProblemException{
super( LOWVISION_COLOR_PROBLEM, _lvType, Messages.getString("ColorProblem.Foreground_and_background_colors_are_too_close._1"), _pc, _proba );
setComponentColors();
setRecommendations();
}
public ColorProblem( PageElement _pe, LowVisionType _lvType, double _proba ) throws LowVisionProblemException{
super( LOWVISION_COLOR_PROBLEM, _lvType, Messages.getString("ColorProblem.Foreground_and_background_colors_are_too_close._1"), _pe, _proba );
foregroundColor = _pe.getForegroundColor();
backgroundColor = _pe.getBackgroundColor();
setRecommendations();
}
protected void setRecommendations() throws LowVisionProblemException{
numRecommendations = 1;
recommendations = new LowVisionRecommendation[numRecommendations];
recommendations[0] = new EnoughContrastRecommendation( this, foregroundColor, backgroundColor );
}
private void setComponentColors() throws LowVisionProblemException{
if( componentType == PageComponent.SS_CHARACTER_TYPE ){
foregroundColor = ((CharacterSS)pageComponent).getForegroundColor();
backgroundColor = ((CharacterSS)pageComponent).getBackgroundColor();
}
else if( componentType == PageComponent.MS_CHARACTER_TYPE ){
backgroundColor = ((CharacterMS)pageComponent).getBackgroundColor();
//use average color
foregroundColor = ((CharacterMS)pageComponent).getForegroundColor();
}
else if( componentType == PageComponent.SM_CHARACTER_TYPE ){
foregroundColor = ((CharacterSM)pageComponent).getForegroundColor();
}
else{
throw new LowVisionProblemException( "Invalid component type." ); //$NON-NLS-1$
}
}
public String getDescription() throws LowVisionProblemException{
return( super.getDescription() );
}
public int getForegroundColor(){
return( foregroundColor );
}
public int getBackgroundColor(){
return( backgroundColor );
}
}