// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/

package graphtea.plugins.main.select;

import graphtea.extensions.AlgorithmUtils;
import graphtea.graph.graph.GPoint;
import graphtea.graph.graph.Vertex;
import graphtea.plugins.main.GraphData;
import graphtea.plugins.main.extension.GraphActionExtension;

import java.util.HashSet;

/**
 * @author Azin Azadi
 */
public class ScaleOutSelection implements GraphActionExtension {
    static double scale = 0.25;
    public String getName() {
        return "Scale Out Selection";
    }

    public String getDescription() {
        return "Shrinks the selection. HotKey:(Alt+Control+P)";
    }

    public void action(GraphData gd) {
        if (gd.select.isSelectionEmpty())
            return;
        HashSet<Vertex> V = gd.select.getSelectedVertices();
        GPoint center = AlgorithmUtils.getCenter(V);
        for (Vertex v : V) {
            GPoint loc = v.getLocation();
            GPoint gp = GPoint.sub(loc,center);
            setNewLocation(v, loc, gp.x, gp.y);
        }
    }

    protected void setNewLocation(Vertex v, GPoint loc, double x, double y) {
        v.setLocation(new GPoint(loc.x - x * scale, loc.y - y * scale));
    }

    @Override
    public String getCategory() {
        return "Basic Operations";
    }
}
