// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.core.ui.editor.properties.process;
import org.eclipse.jface.viewers.IFilter;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.PlatformUI;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.designer.core.ui.editor.ProcessEditorInput;
import org.talend.designer.core.ui.editor.process.Process;
import org.talend.designer.core.ui.editor.process.ProcessPart;
import org.talend.repository.model.RepositoryNode;
import org.talend.repository.model.IRepositoryNode.EProperties;
/**
* Section filter. <br/>
*
*/
public class StatsAndLogsSectionFilter implements IFilter {
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IFilter#select(java.lang.Object)
*/
public boolean select(Object toTest) {
if (toTest instanceof ProcessPart) {
return true;
}
if (toTest instanceof RepositoryNode) {
RepositoryNode node = (RepositoryNode) toTest;
if (node.getProperties(EProperties.CONTENT_TYPE) == ERepositoryObjectType.PROCESS) {
if (getProcessPartByRepositoryNode(node) != null) {
return true;
}
}
}
return false;
}
/**
* Find out if the editor related to the node is open.
*
* @param node
* @return
*/
public static Process getProcessPartByRepositoryNode(RepositoryNode node) {
IEditorReference[] editors = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences();
for (int i = 0; i < editors.length; i++) {
try {
IEditorInput editorInput = editors[i].getEditorInput();
if (editorInput instanceof ProcessEditorInput) {
ProcessEditorInput processEditorInput = (ProcessEditorInput) editorInput;
if (node.getObject().getProperty().equals(processEditorInput.getRepositoryNode().getObject().getProperty())) {
return processEditorInput.getLoadedProcess();
}
}
} catch (Exception e) {
continue;
}
}
return null;
}
}