1/*
2 * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24package com.sun.hotspot.igv.filterwindow.actions;
25
26import com.sun.hotspot.igv.filter.Filter;
27import com.sun.hotspot.igv.filterwindow.FilterTopComponent;
28import javax.swing.Action;
29import javax.swing.JOptionPane;
30import org.openide.nodes.Node;
31import org.openide.util.HelpCtx;
32import org.openide.util.NbBundle;
33import org.openide.util.actions.CookieAction;
34import org.openide.windows.WindowManager;
35
36/**
37 *
38 * @author Thomas Wuerthinger
39 */
40public final class RemoveFilterAction extends CookieAction {
41
42    @Override
43    protected void performAction(Node[] activatedNodes) {
44        Object[] options = {"Yes",
45            "No",
46            "Cancel"
47        };
48        int n = JOptionPane.showOptionDialog(WindowManager.getDefault().getMainWindow(),
49                "Do you really want to delete " + activatedNodes.length + " filter(s)?", "Delete Filters",
50                JOptionPane.YES_NO_CANCEL_OPTION,
51                JOptionPane.QUESTION_MESSAGE,
52                null,
53                options,
54                options[2]);
55
56        if (n == JOptionPane.YES_OPTION) {
57            for (int i = 0; i < activatedNodes.length; i++) {
58                FilterTopComponent.findInstance().removeFilter(activatedNodes[i].getLookup().lookup(Filter.class));
59            }
60        }
61    }
62
63    @Override
64    protected int mode() {
65        return CookieAction.MODE_ALL;
66    }
67
68    @Override
69    public String getName() {
70        return NbBundle.getMessage(RemoveFilterAction.class, "CTL_RemoveFilterAction");
71    }
72
73    public RemoveFilterAction() {
74        putValue(Action.SHORT_DESCRIPTION, "Remove selected filter");
75    }
76
77    @Override
78    protected Class[] cookieClasses() {
79        return new Class[]{
80            Filter.class
81        };
82    }
83
84    @Override
85    protected void initialize() {
86        super.initialize();
87        putValue("noIconInMenu", Boolean.TRUE);
88    }
89
90    @Override
91    protected String iconResource() {
92        return "com/sun/hotspot/igv/filterwindow/images/minus.png";
93    }
94
95    @Override
96    public HelpCtx getHelpCtx() {
97        return HelpCtx.DEFAULT_HELP;
98    }
99
100    @Override
101    protected boolean asynchronous() {
102        return false;
103    }
104}
105