/**
* (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.panels;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.inject.Inject;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.jabylon.rest.ui.model.PropertyPair;
import org.jabylon.rest.ui.tools.PropertyEditorTool;
import org.jabylon.rest.ui.tools.PropertyToolTab;
import org.jabylon.rest.ui.wicket.BasicPanel;
import org.jabylon.rest.ui.wicket.components.ClientSideTabbedPanel;
/**
* TODO short description for PropertiesEditorToolbar.
* <p>
* Long description for PropertiesEditorToolbar.
*
* @author utzig
*/
public class PropertiesTools extends BasicPanel<PropertyPair> {
/** field <code>serialVersionUID</code> */
private static final long serialVersionUID = 1L;
@Inject
private List<PropertyEditorTool> tools;
private ClientSideTabbedPanel<PropertyToolTab> tabContainer;
private List<PropertyToolTab> extensions;
public PropertiesTools(String id, IModel<PropertyPair> model, PageParameters pageParameters) {
super(id, model, pageParameters);
}
@Override
protected void construct() {
extensions = createExtensions();
tabContainer = new ClientSideTabbedPanel<PropertyToolTab>("tabs", extensions,true,"propertyTools/activeTab");
add(tabContainer);
PropertyPair pair = getModelObject();
// int selected = tabContainer.getSelectedTab();
for (PropertyToolTab tool : extensions) {
tool.setModel(Model.of(pair));
}
}
private List<PropertyToolTab> createExtensions() {
List<PropertyToolTab> extensions = new ArrayList<PropertyToolTab>(tools.size());
Collections.sort(tools, new Comparator<PropertyEditorTool>() {
@Override
public int compare(PropertyEditorTool o1, PropertyEditorTool o2) {
return o1.getPrecedence() - o2.getPrecedence();
}
});
for (PropertyEditorTool tool : tools) {
extensions.add(new PropertyToolTab(tool));
}
return extensions;
}
}