/** * (C) Copyright 2013 Jabylon (http://www.jabylon.org) 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 */ /** * */ package org.jabylon.rest.ui.wicket.pages; import java.util.ArrayList; import java.util.List; import org.apache.wicket.model.IModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.eclipse.emf.common.util.URI; import org.jabylon.properties.PropertyFileDescriptor; import org.jabylon.properties.Resolvable; import org.jabylon.rest.ui.wicket.panels.BreadcrumbPanel; import org.jabylon.rest.ui.wicket.panels.ProjectResourcePanel; import org.jabylon.rest.ui.wicket.panels.PropertyEditorPanel; import org.jabylon.rest.ui.wicket.panels.PropertyEditorSinglePanel; import org.jabylon.rest.ui.wicket.panels.PropertyListPanel; /** * @author Johannes Utzig (jutzig.dev@googlemail.com) * */ public class ResourcePage<T extends Resolvable<?, ?>> extends GenericResolvablePage<T> { private static final long serialVersionUID = 1L; public ResourcePage(PageParameters parameters) { super(parameters); } @Override protected void onBeforeRenderPage() { T object = getModelObject(); if (object instanceof PropertyFileDescriptor) { PropertyFileDescriptor descriptor = (PropertyFileDescriptor) object; // legacy editor if(getPageParameters().get("editor").toString("").equals("full")) addOrReplace(new PropertyEditorPanel(descriptor,getPageParameters())); else { if(getPageParameters().get("key").isEmpty()) addOrReplace(new PropertyListPanel(descriptor,getPageParameters())); else addOrReplace(new PropertyEditorSinglePanel(descriptor,getPageParameters())); } } else addOrReplace(new ProjectResourcePanel(object,getPageParameters())); } @SuppressWarnings("unchecked") @Override protected void construct() { BreadcrumbPanel breadcrumbPanel = new BreadcrumbPanel("breadcrumb-panel", (IModel<Resolvable<?, ?>>) getModel() ,getPageParameters()); add(breadcrumbPanel); } @SuppressWarnings("unchecked") protected T doLookup(List<String> segments) { List<String> modified = new ArrayList<String>(segments); if(segments.isEmpty() || !segments.get(0).equals("workspace")) modified.add(0, "workspace"); URI uri = URI.createHierarchicalURI(modified.toArray(new String[modified.size()]), null, null); return (T) getLookup().resolve(uri); } }