/*
Copyright 2008-2010 Gephi
Authors : Jeremy Subtil <jeremy.subtil@gephi.org>
Website : http://www.gephi.org
This file is part of Gephi.
Gephi is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
Gephi is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Gephi. If not, see <http://www.gnu.org/licenses/>.
*/
package org.gephi.preview;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.gephi.preview.api.Colorizer;
import org.gephi.preview.api.ColorizerFactory;
import org.gephi.preview.updaters.CustomColorMode;
import org.gephi.preview.updaters.EdgeB1ColorMode;
import org.gephi.preview.updaters.EdgeB2ColorMode;
import org.gephi.preview.updaters.EdgeBothBColorMode;
import org.gephi.preview.updaters.EdgeOriginalColorMode;
import org.gephi.preview.updaters.NodeOriginalColorMode;
import org.gephi.preview.updaters.ParentColorMode;
import org.openide.util.lookup.ServiceProvider;
/**
* Implementation of the colorizer factory.
*
* @author Jérémy Subtil <jeremy.subtil@gephi.org>
*/
@ServiceProvider(service = ColorizerFactory.class)
public class ColorizerFactoryImpl implements ColorizerFactory {
/**
* Returns whether or not the given string matches with the given color mode
* identifier.
*
* @param s the string to compare
* @param identifier the color mode identifier
* @return true if the given string matches with the color mode identifier
*/
private boolean matchColorMode(String s, String identifier) {
String regexp = String.format("\\s*%s\\s*", identifier);
Pattern p = Pattern.compile(regexp);
Matcher m = p.matcher(s);
return m.lookingAt();
}
/**
* Returns whether or not the given string matches with the
* CustomColorMode's identifier.
*
* @param s the string to compare
* @return true if the given string matches with the CustomColorMode's identifier
*/
public boolean matchCustomColorMode(String s) {
return matchColorMode(s, CustomColorMode.getIdentifier());
}
/**
* Returns whether or not the given string matches with the
* NodeOriginalColorMode's identifier.
*
* @param s the string to compare
* @return true if the given string matches with the NodeOriginalColorMode's identifier
*/
public boolean matchNodeOriginalColorMode(String s) {
return matchColorMode(s, NodeOriginalColorMode.getIdentifier());
}
/**
* Returns whether or not the given string matches with the
* ParentColorMode's identifier.
*
* @param s the string to compare
* @return true if the given string matches with the ParentColorMode's identifier
*/
public boolean matchParentColorMode(String s) {
return matchColorMode(s, ParentColorMode.getIdentifier());
}
/**
* Returns whether or not the given string matches with the
* EdgeB1ColorMode's identifier.
*
* @param s the string to compare
* @return true if the given string matches with the EdgeB1ColorMode's identifier
*/
public boolean matchEdgeB1ColorMode(String s) {
return matchColorMode(s, EdgeB1ColorMode.getIdentifier());
}
/**
* Returns whether or not the given string matches with the
* EdgeB2ColorMode's identifier.
*
* @param s the string to compare
* @return true if the given string matches with the EdgeB2ColorMode's identifier
*/
public boolean matchEdgeB2ColorMode(String s) {
return matchColorMode(s, EdgeB2ColorMode.getIdentifier());
}
/**
* Returns whether or not the given string matches with the
* EdgeBothBColorMode's identifier.
*
* @param s the string to compare
* @return true if the given string matches with the EdgeBothBColorMode's identifier
*/
public boolean matchEdgeBothBColorMode(String s) {
return matchColorMode(s, EdgeBothBColorMode.getIdentifier());
}
public boolean matchEdgeOriginalColorMode(String s) {
return matchColorMode(s, EdgeOriginalColorMode.getIdentifier());
}
/**
* Returns whether or not the given colorizer is a CustomColorMode.
*
* @param colorizer the colorizer to identify
* @return true if the given colorizer is a CustomColorMode
*/
public boolean isCustomColorMode(Colorizer colorizer) {
return matchCustomColorMode(colorizer.toString());
}
/**
* Returns whether or not the given colorizer is a NodeOriginalColorMode.
*
* @param colorizer the colorizer to identify
* @return true if the given colorizer is a NodeOriginalColorMode
*/
public boolean isNodeOriginalColorMode(Colorizer colorizer) {
return matchNodeOriginalColorMode(colorizer.toString());
}
/**
* Returns whether or not the given colorizer is a ParentColorMode.
*
* @param colorizer the colorizer to identify
* @return true if the given colorizer is a ParentColorMode
*/
public boolean isParentColorMode(Colorizer colorizer) {
return matchParentColorMode(colorizer.toString());
}
/**
* Returns whether or not the given colorizer is a EdgeB1ColorMode.
*
* @param colorizer the colorizer to identify
* @return true if the given colorizer is a EdgeB1ColorMode
*/
public boolean isEdgeB1ColorMode(Colorizer colorizer) {
return matchEdgeB1ColorMode(colorizer.toString());
}
/**
* Returns whether or not the given colorizer is a EdgeB2ColorMode.
*
* @param colorizer the colorizer to identify
* @return true if the given colorizer is a EdgeB2ColorMode
*/
public boolean isEdgeB2ColorMode(Colorizer colorizer) {
return matchEdgeB2ColorMode(colorizer.toString());
}
/**
* Returns whether or not the given colorizer is a EdgeBothBColorMode.
*
* @param colorizer the colorizer to identify
* @return true if the given colorizer is a EdgeBothBColorMode
*/
public boolean isEdgeBothBColorMode(Colorizer colorizer) {
return matchEdgeBothBColorMode(colorizer.toString());
}
public boolean isEdgeOriginalColorMode(Colorizer colorizer) {
return matchEdgeOriginalColorMode(colorizer.toString());
}
/**
* Creates a CustomColorMode colorizer from the given color components.
*
* @param r the red color component
* @param g the green color component
* @param b the blue color component
* @return a CustomColorMode colorizer
*/
public Colorizer createCustomColorMode(int r, int g, int b) {
return new CustomColorMode(r, g, b);
}
/**
* Creates a CustomColorMode colorizer from the given color object.
*
* @param color the color object
* @return a CustomColorMode colorizer
*/
public Colorizer createCustomColorMode(java.awt.Color color) {
return createCustomColorMode(color.getRed(), color.getGreen(), color.getBlue());
}
/**
* Creates a NodeOriginalColorMode colorizer.
*
* @return a NodeOriginalColorMode colorizer
*/
public Colorizer createNodeOriginalColorMode() {
return new NodeOriginalColorMode();
}
/**
* Creates a ParentColorMode colorizer.
*
* @return a ParentColorMode colorizer
*/
public Colorizer createParentColorMode() {
return new ParentColorMode();
}
/**
* Creates a EdgeB1ColorMode colorizer.
*
* @return a EdgeB1ColorMode colorizer
*/
public Colorizer createEdgeB1ColorMode() {
return new EdgeB1ColorMode();
}
/**
* Creates a EdgeB2ColorMode colorizer.
*
* @return a EdgeB2ColorMode colorizer
*/
public Colorizer createEdgeB2ColorMode() {
return new EdgeB2ColorMode();
}
/**
* Creates a EdgeBothBColorMode colorizer.
*
* @return a EdgeBothBColorMode colorizer
*/
public Colorizer createEdgeBothBColorMode() {
return new EdgeBothBColorMode();
}
public Colorizer createEdgeOriginalColorMode() {
return new EdgeOriginalColorMode();
}
}