/******************************************************************************* * Copyright (c) 2011, 2012, 2013, 2014 Red Hat, Inc. * All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation * ******************************************************************************/ package org.kie.eclipse.navigator; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.eclipse.wst.server.core.IServer; import org.eclipse.wst.server.core.ServerCore; import org.kie.eclipse.navigator.view.IKieNavigatorView; import org.kie.eclipse.navigator.view.content.ContainerNode; import org.kie.eclipse.navigator.view.content.IContentNode; import org.kie.eclipse.navigator.view.content.ServerNode; import org.kie.eclipse.navigator.view.utils.SimpleTreeIterator; import org.kie.eclipse.server.KieServerHandler; import org.kie.eclipse.server.ServerProxy; /** * This is a placeholder class that replaces the default IWorkspaceRoot used as * initial input for CommonViewers. This class is part of the public API and * allows other CommonNavigator plugins to embed KIE Navigator content as child * or root nodes into their own content. */ public class KieNavigatorContentRoot extends SimpleTreeIterator<Object> { protected IKieNavigatorView viewer; protected List<? extends IContentNode<?>> children; /** * @param kieNavigatorView */ public KieNavigatorContentRoot(IKieNavigatorView viewer) { this.viewer = viewer; } public List<? extends Object> getChildren() { children = ContainerNode.updateChildren(children, createChildren()); return children; } protected List<? extends IContentNode<?>> createChildren() { List<ServerNode> children = new ArrayList<ServerNode>(); for (IServer s : ServerCore.getServers()) { if (KieServerHandler.isSupportedServer(s)) { s = new ServerProxy(s); ServerNode node = new ServerNode(s, viewer); children.add(node); } } Collections.sort(children); return ( List<? extends IContentNode<?>> )children; } @SuppressWarnings("unchecked") @Override public Iterator<Object> iterator() { return new TreeIterator((List<Object>)getChildren()); } }