/*
* RapidMiner
*
* Copyright (C) 2001-2014 by RapidMiner and the contributors
*
* Complete list of developers available at our web site:
*
* http://rapidminer.com
*
* This program 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.
*
* This program 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 this program. If not, see http://www.gnu.org/licenses/.
*/
package com.rapidminer.gui.new_plotter.engine.jfreechart.actions;
import java.awt.event.ActionEvent;
import java.util.LinkedList;
import java.util.List;
import com.rapidminer.gui.new_plotter.configuration.AxisParallelLineConfiguration;
import com.rapidminer.gui.new_plotter.configuration.RangeAxisConfig;
import com.rapidminer.gui.new_plotter.engine.jfreechart.JFreeChartPlotEngine;
import com.rapidminer.gui.tools.ResourceAction;
/**
* This action allows the user to remove all parallel lines (horizontal/vertical) from the current chart.
*
* @author Marco Boeck
*
*/
public class ClearParallelLinesAction extends ResourceAction {
/** the {@link JFreeChartPlotEngine} instance for this action */
private JFreeChartPlotEngine engine;
private static final long serialVersionUID = 7788302558857099622L;
/**
* Creates a new {@link ClearParallelLinesAction}.
* @param engine
*/
public ClearParallelLinesAction(JFreeChartPlotEngine engine) {
super(true, "plotter.popup_menu.clear_parallel_lines");
this.engine = engine;
}
@Override
public void actionPerformed(ActionEvent e) {
clearParallelLines(engine);
}
/**
* Removes all parallel lines from the current chart.
*/
public static synchronized void clearParallelLines(final JFreeChartPlotEngine engine) {
// remove lines from domain
List<AxisParallelLineConfiguration> domainLines = engine.getPlotInstance().getMasterPlotConfiguration().getDomainConfigManager().getCrosshairLines().getLines();
List<AxisParallelLineConfiguration> clonedListOfDomainLines = new LinkedList<AxisParallelLineConfiguration>(domainLines);
for (int i=0; i<clonedListOfDomainLines.size(); i++) {
AxisParallelLineConfiguration line = clonedListOfDomainLines.get(i);
engine.getPlotInstance().getMasterPlotConfiguration().getDomainConfigManager().getCrosshairLines().removeLine(line);
}
// remove lines from RangeAxisConfigs
for (RangeAxisConfig config : engine.getPlotInstance().getMasterPlotConfiguration().getRangeAxisConfigs()) {
List<AxisParallelLineConfiguration> rangeAxisLines = config.getCrossHairLines().getLines();
List<AxisParallelLineConfiguration> clonedListOfRangeAxisLines = new LinkedList<AxisParallelLineConfiguration>(rangeAxisLines);
for (int i=0; i<clonedListOfRangeAxisLines.size(); i++) {
AxisParallelLineConfiguration line = clonedListOfRangeAxisLines.get(i);
config.getCrossHairLines().removeLine(line);
}
}
}
}