Package org.gephi.ranking.api

Source Code of org.gephi.ranking.api.RankingUIModel

/*
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.ranking.api;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;
import org.openide.util.Lookup;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
*
* @author Mathieu Bastian
*/
public class RankingUIModel {

    //Const
    public static final int NODE_RANKING = 1;
    public static final int EDGE_RANKING = 2;
    //Model
    protected int ranking;
    protected boolean barChartVisible;
    protected boolean listVisible;
    protected Class nodeTransformer;
    protected Class edgeTransformer;
    protected List<Transformer> nodeTransformers;
    protected List<Transformer> edgeTransformers;
    protected String selectedNodeRanking;
    protected String selectedEdgeRanking;
    //Listener
    protected List<PropertyChangeListener> listeners = new ArrayList<PropertyChangeListener>();

    public RankingUIModel() {
        //DefaultValues
        ranking = NODE_RANKING;
        barChartVisible = false;
        listVisible = false;
        nodeTransformers = new ArrayList<Transformer>();
        edgeTransformers = new ArrayList<Transformer>();
    }

    public Class getNodeTransformer() {
        return nodeTransformer;
    }

    public Class getEdgeTransformer() {
        return edgeTransformer;
    }

    public String getSelectedEdgeRanking() {
        return selectedEdgeRanking;
    }

    public String getSelectedNodeRanking() {
        return selectedNodeRanking;
    }

    public void setNodeTransformer(Class nodeTransformer) {
        if (this.nodeTransformer != null && this.nodeTransformer.equals(nodeTransformer)) {
            return;
        }
        Class oldValue = this.nodeTransformer;
        this.nodeTransformer = nodeTransformer;
        firePropertyChangeEvent("nodeTransformer", oldValue, nodeTransformer);
    }

    public void setEdgeTransformer(Class edgeTransformer) {
        if (this.edgeTransformer != null && this.edgeTransformer.equals(edgeTransformer)) {
            return;
        }
        Class oldValue = this.edgeTransformer;
        this.edgeTransformer = edgeTransformer;
        firePropertyChangeEvent("edgeTransformer", oldValue, edgeTransformer);
    }

    public void setSelectedEdgeRanking(String selectedEdgeRanking) {
        if (this.selectedEdgeRanking != null && this.selectedEdgeRanking.equals(selectedEdgeRanking)) {
            return;
        }
        if (this.selectedEdgeRanking == null && selectedEdgeRanking == null) {
            return;
        }
        String oldValue = this.selectedEdgeRanking;
        this.selectedEdgeRanking = selectedEdgeRanking;
        firePropertyChangeEvent("selectedEdgeRanking", oldValue, selectedEdgeRanking);
    }

    public void setSelectedNodeRanking(String selectedNodeRanking) {
        if (this.selectedNodeRanking != null && this.selectedNodeRanking.equals(selectedNodeRanking)) {
            return;
        }
        if (this.selectedNodeRanking == null && selectedNodeRanking == null) {
            return;
        }
        String oldValue = this.selectedNodeRanking;
        this.selectedNodeRanking = selectedNodeRanking;
        firePropertyChangeEvent("selectedNodeRanking", oldValue, selectedNodeRanking);
    }

    public Transformer getSelectedNodeTransformer() {
        if (nodeTransformer != null) {
            for (Transformer t : nodeTransformers) {
                if (nodeTransformer.isAssignableFrom(t.getClass())) {
                    return t;
                }
            }
        }
        return null;
    }

    public Transformer getSelectedEdgeTransformer() {
        if (edgeTransformer != null) {
            for (Transformer t : edgeTransformers) {
                if (edgeTransformer.isAssignableFrom(t.getClass())) {
                    return t;
                }
            }
        }
        return null;
    }

    public void addNodeTransformer(Transformer transformer) {
        nodeTransformers.add(transformer);
    }

    public void addEdgeTransformer(Transformer transformer) {
        edgeTransformers.add(transformer);
    }

    public void resetNodeTransformers() {
        nodeTransformers.clear();
    }

    public void resetEdgeTransformers() {
        edgeTransformers.clear();
    }

    public int getRanking() {
        return ranking;
    }

    public boolean isBarChartVisible() {
        return barChartVisible;
    }

    public boolean isListVisible() {
        return listVisible;
    }

    public RankingUIModel saveModel() {
        RankingUIModel save = new RankingUIModel();
        save.barChartVisible = this.barChartVisible;
        save.edgeTransformer = this.edgeTransformer;
        save.listVisible = this.listVisible;
        save.nodeTransformer = this.nodeTransformer;
        save.ranking = this.ranking;
        save.selectedNodeRanking = this.selectedNodeRanking;
        save.selectedEdgeRanking = this.selectedEdgeRanking;
        save.nodeTransformers.addAll(this.nodeTransformers);
        save.edgeTransformers.addAll(this.edgeTransformers);
        return save;
    }

    public void loadModel(RankingUIModel model) {
        this.nodeTransformers.clear();
        this.edgeTransformers.clear();
//        this.barChartVisible = model.barChartVisible;
//        this.edgeTransformer = model.edgeTransformer;
//        this.listVisible = model.listVisible;
//        this.nodeTransformer = model.nodeTransformer;
//        this.ranking = model.ranking;
//        this.selectedNodeRanking = model.selectedNodeRanking;
//        this.selectedEdgeRanking = model.selectedEdgeRanking;
        this.nodeTransformers.addAll(model.nodeTransformers);
        this.edgeTransformers.addAll(model.edgeTransformers);
        setBarChartVisible(model.barChartVisible);
        setListVisible(model.listVisible);
        setNodeTransformer(model.nodeTransformer);
        setEdgeTransformer(model.edgeTransformer);
        setRanking(model.ranking);
        setSelectedEdgeRanking(model.selectedEdgeRanking);
        setSelectedNodeRanking(model.selectedNodeRanking);
    }

    public void setListVisible(boolean listVisible) {
        if (this.listVisible == listVisible) {
            return;
        }
        boolean oldValue = this.listVisible;
        this.listVisible = listVisible;
        firePropertyChangeEvent("listVisible", oldValue, listVisible);
    }

    public void setBarChartVisible(boolean barChartVisible) {
        if (this.barChartVisible == barChartVisible) {
            return;
        }
        boolean oldValue = this.barChartVisible;
        this.barChartVisible = barChartVisible;
        firePropertyChangeEvent("barChartVisible", oldValue, barChartVisible);
    }

    public void setRanking(int ranking) {
        if (ranking != NODE_RANKING && ranking != EDGE_RANKING) {
            throw new IllegalArgumentException("Ranking must be NODE_RANKING or EDGE_RANKING");
        }
        if (this.ranking == ranking) {
            return;
        }
        int oldValue = this.ranking;
        this.ranking = ranking;
        firePropertyChangeEvent("ranking", oldValue, ranking);
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        if (!listeners.contains(listener)) {
            listeners.add(listener);
        }
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        listeners.remove(listener);
    }

    private void firePropertyChangeEvent(String propertyName, Object beforeValue, Object afterValue) {
        PropertyChangeEvent event = new PropertyChangeEvent(this, propertyName, beforeValue, afterValue);
        for (PropertyChangeListener listener : listeners) {
            listener.propertyChange(event);
        }
    }

    //XML
    public void readXML(Element modelElement) {
        Element rankingE = (Element) modelElement.getElementsByTagName("ranking").item(0);
        ranking = Integer.parseInt(rankingE.getTextContent());

        Element barchartvisibleE = (Element) modelElement.getElementsByTagName("barchartvisible").item(0);
        barChartVisible = Boolean.parseBoolean(barchartvisibleE.getTextContent());

        Element listvisibleE = (Element) modelElement.getElementsByTagName("listvisible").item(0);
        listVisible = Boolean.parseBoolean(listvisibleE.getTextContent());

    }

    public Element writeXML(Document document) {
        Element rankingModelE = document.createElement("rankinguimodel");

        Element rankingE = document.createElement("ranking");
        rankingE.setTextContent(String.valueOf(ranking));
        rankingModelE.appendChild(rankingE);

        Element barChartE = document.createElement("barchartvisible");
        barChartE.setTextContent(String.valueOf(barChartVisible));
        rankingModelE.appendChild(barChartE);

        Element listE = document.createElement("listvisible");
        listE.setTextContent(String.valueOf(listVisible));
        rankingModelE.appendChild(barChartE);

        /*Element nodeTransformerE = document.createElement("nodetransformer");
        nodeTransformerE.setTextContent(String.valueOf(nodeTransformer));
        rankingModelE.appendChild(nodeTransformerE);

        Element edgeTransformerE = document.createElement("edgetransformer");
        edgeTransformerE.setTextContent(String.valueOf(edgeTransformer));
        rankingModelE.appendChild(edgeTransformerE);*/

        return rankingModelE;
    }
}
TOP

Related Classes of org.gephi.ranking.api.RankingUIModel

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.