/**
* Copyright (C) 2001-2017 RapidMiner GmbH
*/
package com.rapidminer.gui.graphs;
import java.awt.event.InputEvent;
import com.rapidminer.gui.graphs.plugins.ExtendedPickingGraphMousePlugin;
import edu.uci.ics.jung.visualization.control.CrossoverScalingControl;
import edu.uci.ics.jung.visualization.control.PluggableGraphMouse;
import edu.uci.ics.jung.visualization.control.ScalingGraphMousePlugin;
import edu.uci.ics.jung.visualization.control.TranslatingGraphMousePlugin;
/**
* This graph mouse does offer no mode selection but instead has all necessary features in its
* default mode.
*
* @author Marco Boeck
* @since 7.5.0
*
*/
public class SingleDefaultGraphMouse<V, E> extends PluggableGraphMouse {
/** used by the scaling plugin for zoom in */
private float in;
/** used by the scaling plugin for zoom out */
private float out;
private ExtendedPickingGraphMousePlugin<V, E> pickingPlugin;
private TranslatingGraphMousePlugin translatingPlugin;
private ScalingGraphMousePlugin scalingPlugin;
public SingleDefaultGraphMouse(float in, float out) {
this.in = in;
this.out = out;
loadPlugins();
}
/**
* Create and load the plugins to use.
*
*/
protected void loadPlugins() {
pickingPlugin = new ExtendedPickingGraphMousePlugin<V, E>();
pickingPlugin.setRectangleSelectionEnabled(false);
translatingPlugin = new TranslatingGraphMousePlugin(InputEvent.BUTTON1_MASK);
scalingPlugin = new ScalingGraphMousePlugin(new CrossoverScalingControl(), 0, in, out);
add(pickingPlugin);
add(translatingPlugin);
add(scalingPlugin);
}
}