Package org.gephi.desktop.filters

Source Code of org.gephi.desktop.filters.FilterUIModel

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

import java.util.ArrayList;
import java.util.List;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.gephi.filters.api.Query;
import org.gephi.filters.spi.Category;
import org.gephi.filters.spi.Filter;

/**
*
* @author Mathieu Bastian
*/
public final class FilterUIModel {

    private Query selectedQuery;
    private List<Query> expandedQueryNodes;
    private List<Query> expandedParametersNodes;
    private List<Category> expandedCategoryNodes;
    private List<ChangeListener> listeners;

    public FilterUIModel() {
        listeners = new ArrayList<ChangeListener>();
        expandedQueryNodes = new ArrayList<Query>();
        expandedCategoryNodes = new ArrayList<Category>();
        expandedParametersNodes = new ArrayList<Query>();
    }

    public Query getSelectedQuery() {
        return selectedQuery;
    }

    public Query getSelectedRoot() {
        if (selectedQuery != null) {
            Query root = selectedQuery;
            while (root.getParent() != null) {
                root = root.getParent();
            }
            return root;
        }
        return null;
    }

    public void setSelectedQuery(Query query) {
        selectedQuery = query;
        fireChangeEvent();
    }

    public void setExpand(Query query, boolean expanded, boolean parametersExpanded) {
        if (expanded && !expandedQueryNodes.contains(query)) {
            expandedQueryNodes.add(query);
        } else if (!expanded) {
            expandedQueryNodes.remove(query);
        }

        if (parametersExpanded && !expandedParametersNodes.contains(query)) {
            expandedParametersNodes.add(query);
        } else if (!parametersExpanded) {
            expandedParametersNodes.remove(query);
        }
    }

    public void setExpand(Category category, boolean expanded) {
        if (expanded && !expandedCategoryNodes.contains(category)) {
            expandedCategoryNodes.add(category);
        } else if (!expanded) {
            expandedCategoryNodes.remove(category);
        }
    }

    public boolean isExpanded(Query query) {
        return expandedQueryNodes.contains(query);
    }

    public boolean isParametersExpanded(Query query) {
        return expandedParametersNodes.contains(query);
    }

    public boolean isExpanded(Category category) {
        return expandedCategoryNodes.contains(category);
    }

    public void addChangeListener(ChangeListener listener) {
        if (!listeners.contains(listener)) {
            listeners.add(listener);
        }
    }

    public void removeChangeListener(ChangeListener listener) {
        listeners.remove(listener);
    }

    private void fireChangeEvent() {
        ChangeEvent evt = new ChangeEvent(this);
        for (ChangeListener listener : listeners) {
            listener.stateChanged(evt);
        }
    }
}
TOP

Related Classes of org.gephi.desktop.filters.FilterUIModel

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.