/*******************************************************************************
* Copyright (c) 2012 VMware, Inc.
* 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:
* VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.wizard.template.infrastructure.ui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* @author Terry Denney
* @author Leo Dos Santos
* @author Christian Dupuis
*/
public class WizardUIInfo {
static class OrderComparator implements Comparator<WizardUIInfoElement> {
public int compare(WizardUIInfoElement o1, WizardUIInfoElement o2) {
return o1.getOrder() - o2.getOrder();
}
}
static class PageComparator implements Comparator<WizardUIInfoElement> {
public int compare(WizardUIInfoElement o1, WizardUIInfoElement o2) {
return o1.getPage() - o2.getPage();
}
}
private static final String PROJECT_NAME = "projectName";
private ArrayList<WizardUIInfoElement> elements;
private ArrayList<WizardUIInfoPage> pages;
private String topLevelPackage;
private String projectName;
/**
* Get elements for the given page sorted by their relative order
* @param page
* @return
*/
public List<WizardUIInfoElement> getElementsForPage(int page) {
List<WizardUIInfoElement> pageElements = new ArrayList<WizardUIInfoElement>();
if (elements != null) {
for (WizardUIInfoElement element : elements) {
if (element.getPage() == page) {
pageElements.add(element);
}
}
}
Collections.sort(pageElements, new OrderComparator());
return pageElements;
}
public WizardUIInfoPage getPage(int order) {
for (WizardUIInfoPage page : pages) {
if (page.getOrder() == order) {
return page;
}
}
WizardUIInfoPage defaultPage = WizardUIInfoPage.getDefaultPage(order);
pages.add(defaultPage);
return defaultPage;
}
public int getPageCount() {
if (elements == null || elements.size() == 0) {
return 1;
}
WizardUIInfoElement element = Collections.max(elements, new PageComparator());
return element.getPage() + 1;
}
public String getProjectNameToken() {
if (projectName == null) {
return PROJECT_NAME;
}
return projectName;
}
public String[] getTopLevelPackageTokens() {
if (topLevelPackage != null) {
return topLevelPackage.split("\\.");
}
return new String[0];
}
}