// ============================================================================ // // 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.importexport; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.PlatformUI; import org.talend.commons.ui.runtime.image.EImage; import org.talend.commons.ui.runtime.image.ImageProvider; import org.talend.core.model.components.ComponentUtilities; import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.core.model.utils.RepositoryManagerHelper; import org.talend.core.repository.model.ProxyRepositoryFactory; import org.talend.repository.ProjectManager; import org.talend.repository.i18n.Messages; import org.talend.repository.imports.ImportItemWizard; import org.talend.repository.model.ERepositoryStatus; import org.talend.repository.model.IProxyRepositoryFactory; import org.talend.repository.model.IRepositoryNode.ENodeType; import org.talend.repository.model.RepositoryNode; import org.talend.repository.ui.actions.AContextualAction; import org.talend.repository.ui.views.IRepositoryView; /** */ public final class ImportItemAction extends AContextualAction implements IWorkbenchWindowActionDelegate { private static final String IMPORT_ITEM = Messages.getString("ImportItemAction.Label"); //$NON-NLS-1$ private boolean toolbarAction = true; public void init(TreeViewer viewer, IStructuredSelection selection) { toolbarAction = false; boolean canWork = false; IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance(); if (selection.size() == 1) { if (selection.getFirstElement() instanceof RepositoryNode) { RepositoryNode repositoryNode = (RepositoryNode) selection.getFirstElement(); if (factory.isUserReadOnlyOnCurrentProject() || !ProjectManager.getInstance().isInCurrentMainProject(repositoryNode)) { setEnabled(false); return; } if (repositoryNode.getType().equals(ENodeType.SYSTEM_FOLDER) || repositoryNode.getType().equals(ENodeType.SIMPLE_FOLDER)) { canWork = true; } if (repositoryNode.getContentType() == ERepositoryObjectType.REFERENCED_PROJECTS) { canWork = false; } if (repositoryNode.getContentType() == ERepositoryObjectType.SVN_ROOT) { canWork = false; } if (repositoryNode.getObject() != null && repositoryNode.getObject().getRepositoryStatus() == ERepositoryStatus.DELETED) { canWork = false; } } } setEnabled(canWork); } @Override public boolean isVisible() { return isEnabled(); } public ImportItemAction() { super(); this.setText(IMPORT_ITEM); this.setToolTipText(IMPORT_ITEM); this.setImageDescriptor(ImageProvider.getImageDesc(EImage.IMPORT_ICON)); } @Override protected void doRun() { if (ProxyRepositoryFactory.getInstance().isUserReadOnlyOnCurrentProject()) { return; } // qli modified to fix the bug "6999". IRepositoryView repositoryView = RepositoryManagerHelper.findRepositoryView(); if (repositoryView != null && repositoryView.getViewer() instanceof TreeViewer) { ((TreeViewer) repositoryView.getViewer()).getTree().setFocus(); } ISelection selection = this.getSelection(); if (toolbarAction) { if (repositoryView != null) { selection = (IStructuredSelection) repositoryView.getViewer().getSelection(); } } ImportItemWizard wizard = new ImportItemWizard(null); wizard.setWindowTitle(IMPORT_ITEM); wizard.init(PlatformUI.getWorkbench(), (IStructuredSelection) selection); Shell activeShell = Display.getCurrent().getActiveShell(); WizardDialog dialog = new WizardDialog(activeShell, wizard); if (dialog.open() == Window.OK) { refresh(); if (wizard.isNeedToRefreshPalette()) { ComponentUtilities.updatePalette(); } } } public void dispose() { } public void init(IWorkbenchWindow window) { } public void run(IAction action) { doRun(); } public void selectionChanged(IAction action, ISelection selection) { } }