/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
package org.ebayopensource.turmeric.eclipse.services.ui.wizards.pages;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.GlobalRepositorySystem;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOAHelpProvider;
import org.ebayopensource.turmeric.eclipse.repositorysystem.utils.RepositoryUtils;
import org.ebayopensource.turmeric.eclipse.resources.model.AssetInfo;
import org.ebayopensource.turmeric.eclipse.resources.model.ProjectInfo;
import org.ebayopensource.turmeric.eclipse.ui.components.DependencyListEditor;
import org.ebayopensource.turmeric.eclipse.ui.components.DependencyListEditor.IDependencyLazyLoader;
import org.ebayopensource.turmeric.eclipse.utils.ui.UIUtil;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
/**
* The Class DependenciesWizardPage.
*
* @author smathew
*
* The project and library dependency page This page is used for both project
* and library dependency
*/
public class DependenciesWizardPage extends WizardPage implements IWizardPage {
private DependencyListEditor projectsEditor;
private DependencyListEditor libraryEditor;
/**
* Instantiates a new dependencies wizard page.
*
* @param projectType the project type
*/
public DependenciesWizardPage(final String projectType) {
super("newSOAServiceProjectDependenciesWizardPage");
setTitle(projectType + " Dependencies");
setDescription("This wizard page adds project and library dependencies to the new "
+ projectType + " Project.");
}
/**
* {@inheritDoc}
*/
@Override
public void createControl(final Composite parent) {
//Set<AssetInfo> libraries = new TreeSet<AssetInfo>();
Set<? extends AssetInfo> projects = new TreeSet<ProjectInfo>();
try {
projects = RepositoryUtils.getProjectInfoProjectsFromWorkSpace();
} catch (Exception e) {
SOALogger.getLogger().error(e);
throw new RuntimeException(e);
}
final Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new GridLayout(1, true));
final Composite composite = new Composite(container, SWT.NULL);
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
projectsEditor = new DependencyListEditor("Project Dependencies:",
composite, projects, "Project");
setControl(container);
IDependencyLazyLoader dependencyLazyLoader = new IDependencyLazyLoader() {
@Override
public Set<? extends AssetInfo> getAlreadyAddedLibraries() {
return null;
}
@Override
public Set<? extends AssetInfo> getLibs() {
try {
return GlobalRepositorySystem.instanceOf()
.getActiveRepositorySystem().getAssetRegistry()
.getAllLibraries();
} catch (Exception e) {
SOALogger.getLogger().error(e);
UIUtil.showErrorDialog(null, e);
}
return null;
}
};
final Composite libraryComposite = new Composite(container, SWT.NULL);
libraryComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
libraryEditor = new DependencyListEditor("Library Dependencies:",
libraryComposite,dependencyLazyLoader, null, DependencyListEditor.DEPENDENCY_TYPE_LIBRARY);
setControl(container);
UIUtil.getHelpSystem().setHelp(container,
GlobalRepositorySystem.instanceOf().getActiveRepositorySystem()
.getHelpProvider().getHelpContextID(ISOAHelpProvider.PAGE_SERVICE_DEPENDENCIES));
}
/**
* Gets the libraries.
*
* @return the libraries
*/
public Set<String> getLibraries() {
Set<String> result = new HashSet<String>();
for (final AssetInfo info : libraryEditor.getItems()) {
result.add(info.getUniqueID());
}
return result;
}
/**
* Gets the projects.
*
* @return the projects
*/
public Set<String> getProjects() {
Set<String> result = new HashSet<String>();
for (final AssetInfo info : projectsEditor.getItems()) {
result.add(info.getUniqueID());
}
return result;
}
}