package org.freeplane.view.swing.features.progress.mindmapmode;
import java.awt.event.ActionEvent;
import java.util.Collection;
import org.freeplane.core.ui.AMultipleNodeAction;
import org.freeplane.core.ui.EnabledAction;
import org.freeplane.features.map.NodeModel;
import org.freeplane.features.mode.Controller;
import org.freeplane.view.swing.features.filepreview.ViewerController;
/**
* @author Stefan Ott
*
* This class is called when the progress icons are removed
*/
@EnabledAction(checkOnNodeChange = true)
class RemoveProgressAction extends AMultipleNodeAction {
private static final long serialVersionUID = 1L;
public RemoveProgressAction() {
super("IconProgressRemoveAction");
}
/**
*Removes the progresss icons and the extended progress icons
*/
@Override
protected void actionPerformed(final ActionEvent e, final NodeModel node) {
final ProgressUtilities progUtil = new ProgressUtilities();
//remove progress icon if present
if (progUtil.hasProgressIcons(node)) {
ProgressIcons.removeProgressIcons(node);
}
//remove extended progress icon
if (progUtil.hasExtendedProgressIcon(node)) {
final ViewerController vc = ((ViewerController) Controller.getCurrentController().getModeController()
.getExtension(ViewerController.class));
vc.undoableDeactivateHook(node);
}
}
@Override
public void setEnabled() {
final ProgressUtilities progUtil = new ProgressUtilities();
boolean enable = false;
final Collection<NodeModel> nodes = Controller.getCurrentModeController().getMapController().getSelectedNodes();
for (final NodeModel node : nodes) {
if (node != null && (progUtil.hasProgressIcons(node) || progUtil.hasExtendedProgressIcon(node))) {
enable = true;
break;
}
}
setEnabled(enable);
}
}