// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.repository.ui.actions.importproject;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Display;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.general.Project;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.repository.model.ResourceModelUtils;
import org.talend.core.ui.branding.IBrandingService;
import org.talend.repository.i18n.Messages;
import org.talend.repository.model.IProxyRepositoryFactory;
import org.talend.repository.ui.ERepositoryImages;
import org.talend.repository.ui.wizards.newproject.ImportProjectAsWizard;
import org.talend.repository.ui.wizards.newproject.ImportProjectWizardDialog;
/**
* Action used to refresh a repository view.<br/>
*
* $Id: RefreshAction.java 824 2006-12-01 15:49:55 +0000 (ven., 01 déc. 2006) smallet $
*
*/
public final class ImportProjectAsAction extends Action {
private static final String LIB = "lib"; //$NON-NLS-1$
private static final String ACTION_TITLE = Messages.getString("ImportProjectAsAction.actionTitle"); //$NON-NLS-1$
private static final String ACTION_TOOLTIP = Messages.getString("ImportProjectAsAction.actionTooltip", //$NON-NLS-1$
((IBrandingService) GlobalServiceRegister.getDefault().getService(IBrandingService.class)).getShortProductName()); //$NON-NLS-1$
private static ImportProjectAsAction singleton;
public static ImportProjectAsAction getInstance() {
if (singleton == null) {
singleton = new ImportProjectAsAction();
}
return singleton;
}
private String project;
private ImportProjectAsAction() {
super();
this.setText(ACTION_TITLE);
this.setToolTipText(ACTION_TOOLTIP);
this.setImageDescriptor(ImageProvider.getImageDesc(ERepositoryImages.IMPORT_PROJECTS_ACTION));
}
public void run() {
ImportProjectAsWizard docWizard = new ImportProjectAsWizard();
WizardDialog dlg = new ImportProjectWizardDialog(Display.getCurrent().getActiveShell(), docWizard);
if (dlg.open() == IDialogConstants.OK_ID) {
project = docWizard.getProjectName();
} else {
project = null;
}
clearExternalLibraries();
}
/**
* DOC zwang Comment method "clearExternalLibraries".
*/
private void clearExternalLibraries() {
try {
IProxyRepositoryFactory repositoryFactory = ProxyRepositoryFactory.getInstance();
Project[] projects = repositoryFactory.readProject();
for (Project project : projects) {
IProject fsProject = ResourceModelUtils.getProject(project);
IFolder libJavaFolder = fsProject.getFolder(ImportProjectAsAction.LIB);
if (!libJavaFolder.exists()) {
continue;
}
libJavaFolder.delete(true, null);
}
} catch (Exception e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
public String getProjectName() {
return project;
}
}