/******************************************************************************* * Copyright (c) 2012 AGETO Service GmbH and others. * All rights reserved. * * This program and the accompanying materials are 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: * Gunnar Wagenknecht - initial API and implementation *******************************************************************************/ package org.eclipse.gyrex.admin.ui.persistence.internal.adapters; import java.util.List; import org.eclipse.gyrex.admin.ui.adapter.LabelAdapter; import org.eclipse.gyrex.admin.ui.persistence.internal.PersistenceUiActivator; import org.eclipse.gyrex.persistence.storage.lookup.RepositoryContentTypeAssignments; import org.eclipse.gyrex.persistence.storage.registry.IRepositoryDefinition; import org.eclipse.gyrex.persistence.storage.registry.IRepositoryRegistry; import org.eclipse.core.runtime.IPath; public final class WorkbenchAdapterImpl implements LabelAdapter { public static final Object[] NO_CHILDREN = new Object[0]; public Object[] getChildren(final Object o) { if (o instanceof RepositoryContentTypeAssignments) { final List<IPath> contextPaths = ((RepositoryContentTypeAssignments) o).getContextPaths(); final Object[] children = new Object[contextPaths.size()]; for (int i = 0; i < children.length; i++) { children[i] = new RepositoryContentTypeAssignmentsByContextPath((RepositoryContentTypeAssignments) o, contextPaths.get(i)); } return children; } if (o instanceof RepositoryContentTypeAssignmentsByContextPath) return ((RepositoryContentTypeAssignmentsByContextPath) o).getChildren(); if (o instanceof RepositoryContentTypeAssignmentsByContextPathAndMediaType) return ((RepositoryContentTypeAssignmentsByContextPathAndMediaType) o).getChildren(); return NO_CHILDREN; } @Override public String getLabel(final Object o) { if (o instanceof RepositoryContentTypeAssignments) return String.format("Assignments of %s", ((RepositoryContentTypeAssignments) o).getRepositoryId()); if (o instanceof RepositoryContentTypeAssignmentsByContextPath) return ((RepositoryContentTypeAssignmentsByContextPath) o).getLabel(); if (o instanceof RepositoryContentTypeAssignmentsByContextPathAndMediaType) return ((RepositoryContentTypeAssignmentsByContextPathAndMediaType) o).getLabel(); if (o instanceof IRepositoryDefinition) return ((IRepositoryDefinition) o).getRepositoryId(); return String.valueOf(o); } public Object getParent(final Object o) { if (o instanceof RepositoryContentTypeAssignments) return PersistenceUiActivator.getInstance().getService(IRepositoryRegistry.class).getRepositoryDefinition(((RepositoryContentTypeAssignments) o).getRepositoryId()); if (o instanceof RepositoryContentTypeAssignmentsByContextPath) return ((RepositoryContentTypeAssignmentsByContextPath) o).getParent(); if (o instanceof RepositoryContentTypeAssignmentsByContextPathAndMediaType) return ((RepositoryContentTypeAssignmentsByContextPathAndMediaType) o).getParent(); return null; } }