use of org.gephi.filters.api.Query in project gephi by gephi.
the class CategoryChildFactory method createKeys.
@Override
protected boolean createKeys(List<Object> toPopulate) {
Object[] children = utils.getChildren(category);
Arrays.sort(children, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
String s1;
String s2;
if (o1 == FiltersExplorer.QUERIES || o2 == FiltersExplorer.QUERIES) {
return o1 == FiltersExplorer.QUERIES ? 1 : -1;
} else if (o1 instanceof Category && o2 instanceof Category) {
s1 = ((Category) o1).getName();
s2 = ((Category) o2).getName();
return s1.compareTo(s2);
} else if (o1 instanceof FilterBuilder && o2 instanceof FilterBuilder) {
s1 = ((FilterBuilder) o1).getName();
s2 = ((FilterBuilder) o2).getName();
return s1.compareTo(s2);
} else if (o1 instanceof Query && o2 instanceof Query) {
s1 = ((Query) o1).getName();
s2 = ((Query) o2).getName();
return s1.compareTo(s2);
} else if (o1 instanceof Category) {
return -1;
}
return 1;
}
});
toPopulate.addAll(Arrays.asList(children));
return true;
}
use of org.gephi.filters.api.Query in project gephi by gephi.
the class QueryExplorer method propertyChange.
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals(ExplorerManager.PROP_SELECTED_NODES)) {
if (uiModel == null) {
return;
}
Node[] nodeArray = (Node[]) evt.getNewValue();
if (nodeArray.length > 0) {
Node node = ((Node[]) evt.getNewValue())[0];
if (node instanceof RootNode) {
uiModel.setSelectedQuery(null);
filterController.setCurrentQuery(null);
return;
}
while (!(node instanceof QueryNode)) {
node = node.getParentNode();
if (node.getParentNode() == null) {
uiModel.setSelectedQuery(null);
filterController.setCurrentQuery(null);
return;
}
}
QueryNode queryNode = (QueryNode) node;
final Query query = queryNode.getQuery();
new Thread(new Runnable() {
@Override
public void run() {
uiModel.setSelectedQuery(query);
model.removeChangeListener(QueryExplorer.this);
filterController.setCurrentQuery(uiModel.getSelectedRoot());
model.addChangeListener(QueryExplorer.this);
}
}).start();
}
}
}
use of org.gephi.filters.api.Query in project gephi by gephi.
the class FilterModelImpl method destroyQuery.
private void destroyQuery(Query query) {
if (query instanceof AbstractQueryImpl) {
AbstractQueryImpl absQuery = (AbstractQueryImpl) query;
for (Query q : absQuery.getDescendantsAndSelf()) {
if (q instanceof FilterQueryImpl) {
Filter f = ((FilterQueryImpl) q).getFilter();
FilterBuilder builder = ((FilterQueryImpl) q).getBuilder();
if (builder != null) {
builder.destroy(f);
}
}
}
}
}
use of org.gephi.filters.api.Query in project gephi by gephi.
the class FilterModelImpl method destroy.
public void destroy() {
if (filterThread != null) {
filterThread.setRunning(false);
}
autoRefreshor.setRunning(false);
currentResult = null;
listeners = null;
for (Query q : queries) {
destroyQuery(q);
}
}
use of org.gephi.filters.api.Query in project gephi by gephi.
the class AbstractQueryImpl method getDescendantsAndSelf.
@Override
public Query[] getDescendantsAndSelf() {
List<Query> r = new LinkedList<>();
LinkedList<Query> stack = new LinkedList<>();
stack.add(this);
while (!stack.isEmpty()) {
Query q = stack.pop();
r.add(q);
stack.addAll(Arrays.asList(q.getChildren()));
}
return r.toArray(new Query[0]);
}
Aggregations