/******************************************************************************* * 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.view.content; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; import org.eclipse.jgit.lib.Repository; import org.kie.eclipse.server.IKieProjectHandler; import org.kie.eclipse.server.IKieRepositoryHandler; import org.kie.eclipse.server.IKieResourceHandler; import org.kie.eclipse.utils.GitUtils; /** * */ public class RepositoryNode extends ContainerNode<OrganizationNode> implements IPreferenceChangeListener { /** * @param parent * @param name */ protected RepositoryNode(OrganizationNode parent, IKieRepositoryHandler repository) { super(parent, repository); init(); } protected RepositoryNode(ServerNode parent, IKieRepositoryHandler repository) { super(null, repository); this.parent = parent; init(); } private void init() { GitUtils.getRepositoryUtil().getPreferences().addPreferenceChangeListener(this); } @Override protected List<? extends IContentNode<?>> createChildren() { clearHandlerChildren(); load(); List<ProjectNode> children = new ArrayList<ProjectNode>(); Iterator<? extends IKieResourceHandler> iter = handlerChildren.iterator(); while (iter.hasNext()) { IKieResourceHandler h = iter.next(); if (h instanceof IKieProjectHandler) children.add(new ProjectNode(this,(IKieProjectHandler)h)); } return children; } @Override public Object getAdapter(Class adapter) { if (adapter==Repository.class) { Object o = getHandler().getResource(); if (o instanceof Repository) return o; } return super.getAdapter(adapter); } @Override public void dispose() { GitUtils.getRepositoryUtil().getPreferences().removePreferenceChangeListener(this); super.dispose(); } @Override public void preferenceChange(PreferenceChangeEvent event) { getParent().clearChildren(); refresh(); } }