/* * #%L * org.gitools.ui.app * %% * Copyright (C) 2013 - 2014 Universitat Pompeu Fabra - Biomedical Genomics group * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU 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 General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ package org.gitools.plugins.mutex.ui; import org.gitools.heatmap.Heatmap; import org.gitools.heatmap.decorator.DetailsDecoration; import org.gitools.plugins.mutex.MutualExclusiveBookmark; import org.gitools.plugins.mutex.MutualExclusivePlugin; import org.gitools.plugins.mutex.actions.*; import org.gitools.ui.core.Application; import org.gitools.ui.core.actions.ActionSet; import org.gitools.ui.core.actions.BaseAction; import org.gitools.ui.core.actions.dynamicactions.DynamicActionsManager; import org.gitools.ui.core.components.boxes.DetailsBox; import org.gitools.ui.platform.wizard.PageDialog; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.List; public class MutualExclusiveBox extends DetailsBox { private final MutualExclusivePlugin plugin; public static final ActionSet ACTIONS = new ActionSet(new BaseAction[]{ new ViewMutualExclusiveResultsAction(), new ApplyMutualExclusiveBookmarkAction(), new SelectTestedMutualExclusiveAction(), BaseAction.separator, new RemoveMutualExclusiveAction() }); public MutualExclusiveBox(String title, Heatmap heatmap, MutualExclusivePlugin plugin) { super(MutualExclusivePlugin.ID, title, ACTIONS, heatmap); this.plugin = plugin; } @Override public void registerListeners() { plugin.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { update(); } }); } @Override public void setCollapsed(boolean collapsed) { super.setCollapsed(collapsed); update(); } @Override public void update() { if (!isVisible() || isCollapsed()) { return; } final List<DetailsDecoration> details = new ArrayList<>(); for (String key : plugin.getKeys()) { MutualExclusiveBookmark bookmark = plugin.getBookmark(key); DetailsDecoration d = new DetailsDecoration(bookmark.getName() + " p-value", bookmark.getDescription(), Double.toString(bookmark.getResult().getMutexPvalue())); d.setReference(key); details.add(d); } MutualExclusiveBox.this.draw(details); } @Override public boolean isVisible() { return (plugin.isEnabled() && plugin.isNotEmpty()); } @Override protected void onMouseDoubleClick(DetailsDecoration detail) { String key = (String) detail.getReference(); MutualExclusiveResultPage page = new MutualExclusiveResultPage(getHeatmap(), plugin.getBookmark(key)); PageDialog dlg = new PageDialog(Application.get(), page); dlg.setVisible(true); if (dlg.isCancelled()) { return; } plugin.forceUpdate(); } @Override protected void onMouseRightClick(DetailsDecoration propertyItem, MouseEvent e) { DynamicActionsManager.updatePopupMenu(popupMenu, IMutualExclusiveAction.class, (MutualExclusiveBookmark) plugin.getBookmark((String) propertyItem.getReference()), null); popupMenu.show(e.getComponent(), e.getX(), e.getY()); } @Override protected void onMouseSingleClick(DetailsDecoration propertyItem) { MutualExclusiveBookmark bookmark = plugin.getBookmark((String) propertyItem.getReference()); HighlightMutualExclusiveBookmarkAction action = new HighlightMutualExclusiveBookmarkAction(bookmark); action.actionPerformed(null); } }