package org.erlide.cover.ui.actions; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ITreeSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.ui.statushandlers.StatusManager; import org.erlide.cover.core.Logger; import org.erlide.cover.ui.Activator; import org.erlide.cover.ui.annotations.EditorTracker; import org.erlide.cover.views.model.StatsTreeObject; /** * Abstract class for the action of showing and hiding annotations * * @author Aleksandra Lipiec <aleksandra.lipiec@erlang-solutions.com> * */ public abstract class CoverageAction extends Action { protected EditorTracker marker; private final TreeViewer viewer; private final Logger log; // logger public CoverageAction(final TreeViewer viewer) { log = Activator.getDefault(); this.viewer = viewer; marker = EditorTracker.getInstance(); } @Override public void run() { log.info("show coverage!"); final ISelection selection = viewer.getSelection(); if (!(selection instanceof ITreeSelection)) { final IStatus executionStatus = new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Internall error occured: bad sellection type", null); StatusManager.getManager().handle(executionStatus, StatusManager.SHOW); return; } final ITreeSelection treeSelection = (ITreeSelection) selection; log.info(treeSelection.getFirstElement().getClass()); perform((StatsTreeObject) treeSelection.getFirstElement()); } protected abstract void perform(StatsTreeObject selection); }