Package org.gephi.desktop.clustering

Source Code of org.gephi.desktop.clustering.ClusterNode$SelectAction

/*
Copyright 2008-2010 Gephi
Authors : Mathieu Bastian <mathieu.bastian@gephi.org>
Website : http://www.gephi.org

This file is part of Gephi.

Gephi 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.

Gephi 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 Gephi.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.gephi.desktop.clustering;

import java.awt.Image;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import org.gephi.clustering.api.Cluster;
import org.gephi.clustering.api.ClusteringController;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;

/**
*
* @author Mathieu Bastian
*/
public class ClusterNode extends AbstractNode {

    private Cluster cluster;

    public ClusterNode(Cluster cluster) {
        super(Children.LEAF);
        this.cluster = cluster;
        setShortDescription("<html><b>" + cluster.getName() + "</b><br>Elements: " + cluster.getNodesCount() + "</html>");
    }

    @Override
    public String getHtmlDisplayName() {
        String msg = "<html>" + cluster.getName() + " <font color='AAAAAA'><i>- ";
        if (cluster.getNodesCount() > 1) {
            msg += NbBundle.getMessage(ClusterNode.class, "ClusterNode.displayName.nodesCount.plural", cluster.getNodesCount());
        } else {
            msg += NbBundle.getMessage(ClusterNode.class, "ClusterNode.displayName.nodesCount.singular", cluster.getNodesCount());
        }
        msg += "</i></font></html>";
        return msg;
    }

    @Override
    public Image getIcon(int type) {
        return new ImageIcon(getClass().getResource("/org/gephi/desktop/clustering/resources/cluster.png")).getImage();
    }

    @Override
    public Action[] getActions(boolean popup) {
        return new Action[]{new SelectAction(), new GroupAction(), new UngroupAction()};
    }

    private class SelectAction extends AbstractAction {

        public SelectAction() {
            putValue(NAME, NbBundle.getMessage(ClusterNode.class, "ClusterNode.actions.Select.name"));
        }

        public void actionPerformed(ActionEvent e) {
            ClusteringController cc = Lookup.getDefault().lookup(ClusteringController.class);
            cc.selectCluster(cluster);
        }
    }

    private class GroupAction extends AbstractAction {

        public GroupAction() {
            putValue(NAME, NbBundle.getMessage(ClusterNode.class, "ClusterNode.actions.Group.name"));
        }

        public void actionPerformed(ActionEvent e) {
            ClusteringController cc = Lookup.getDefault().lookup(ClusteringController.class);
            cc.groupCluster(cluster);
        }

        @Override
        public boolean isEnabled() {
            ClusteringController cc = Lookup.getDefault().lookup(ClusteringController.class);
            return cc.canGroup(cluster);
        }
    }

    private class UngroupAction extends AbstractAction {

        public UngroupAction() {
            putValue(NAME, NbBundle.getMessage(ClusterNode.class, "ClusterNode.actions.Ungroup.name"));
        }

        public void actionPerformed(ActionEvent e) {
            ClusteringController cc = Lookup.getDefault().lookup(ClusteringController.class);
            cc.ungroupCluster(cluster);
        }

        @Override
        public boolean isEnabled() {
            ClusteringController cc = Lookup.getDefault().lookup(ClusteringController.class);
            return cc.canUngroup(cluster);
        }
    }
}
TOP

Related Classes of org.gephi.desktop.clustering.ClusterNode$SelectAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.