X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=cms%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fviews%2FDistributionsView.java;fp=cms%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fviews%2FDistributionsView.java;h=0000000000000000000000000000000000000000;hb=6fc94d69efe089414ac9e63bde3efab1cbf7b7ca;hp=ffebf6a7f051b79cfbe3258517340baa640caec1;hpb=b36c62642bd0db11b3133b369cc026fd4b7a1ec6;p=gpl%2Fargeo-slc.git diff --git a/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/views/DistributionsView.java b/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/views/DistributionsView.java deleted file mode 100644 index ffebf6a7f..000000000 --- a/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/views/DistributionsView.java +++ /dev/null @@ -1,370 +0,0 @@ -package org.argeo.slc.client.ui.dist.views; - -import java.util.HashMap; -import java.util.Map; - -import javax.jcr.Repository; -import javax.jcr.RepositoryException; - -import org.argeo.cms.ArgeoNames; -import org.argeo.cms.ui.workbench.util.CommandUtils; -import org.argeo.eclipse.ui.TreeParent; -import org.argeo.slc.SlcException; -import org.argeo.slc.SlcNames; -import org.argeo.slc.client.ui.dist.DistPlugin; -import org.argeo.slc.client.ui.dist.commands.CopyLocalJavaWorkspace; -import org.argeo.slc.client.ui.dist.commands.CopyWorkspace; -import org.argeo.slc.client.ui.dist.commands.CreateLocalJavaWorkspace; -import org.argeo.slc.client.ui.dist.commands.CreateWorkspace; -import org.argeo.slc.client.ui.dist.commands.DeleteWorkspace; -import org.argeo.slc.client.ui.dist.commands.DisplayRepoInformation; -import org.argeo.slc.client.ui.dist.commands.Fetch; -import org.argeo.slc.client.ui.dist.commands.NormalizeDistribution; -import org.argeo.slc.client.ui.dist.commands.NormalizeWorkspace; -import org.argeo.slc.client.ui.dist.commands.OpenGenerateBinariesWizard; -import org.argeo.slc.client.ui.dist.commands.PublishWorkspace; -import org.argeo.slc.client.ui.dist.commands.RegisterRepository; -import org.argeo.slc.client.ui.dist.commands.RunInOsgi; -import org.argeo.slc.client.ui.dist.commands.UnregisterRemoteRepo; -import org.argeo.slc.client.ui.dist.controllers.DistTreeComparator; -import org.argeo.slc.client.ui.dist.controllers.DistTreeComparer; -import org.argeo.slc.client.ui.dist.controllers.DistTreeContentProvider; -import org.argeo.slc.client.ui.dist.controllers.DistTreeDoubleClickListener; -import org.argeo.slc.client.ui.dist.controllers.DistTreeLabelProvider; -import org.argeo.slc.client.ui.dist.model.DistParentElem; -import org.argeo.slc.client.ui.dist.model.ModularDistVersionBaseElem; -import org.argeo.slc.client.ui.dist.model.ModularDistVersionElem; -import org.argeo.slc.client.ui.dist.model.RepoElem; -import org.argeo.slc.client.ui.dist.model.WkspGroupElem; -import org.argeo.slc.client.ui.dist.model.WorkspaceElem; -import org.eclipse.jface.action.IContributionItem; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.TreeViewerColumn; -import org.eclipse.jface.viewers.ViewerComparator; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.part.ViewPart; - -/** - * Browse, manipulate and manage distributions across multiple repositories - * (like fetch, merge, publish, etc.). - */ -public class DistributionsView extends ViewPart implements SlcNames, ArgeoNames { - // private final static Log log = - // LogFactory.getLog(DistributionsView.class); - - public final static String ID = DistPlugin.PLUGIN_ID + ".distributionsView"; - - /* DEPENDENCY INJECTION */ - private Repository nodeRepository; - private DistTreeContentProvider treeContentProvider; - - private TreeViewer viewer; - - @Override - public void createPartControl(Composite parent) { - // Define the TableViewer - viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL - | SWT.FULL_SELECTION | SWT.BORDER); - - TreeViewerColumn col = new TreeViewerColumn(viewer, SWT.NONE); - col.getColumn().setWidth(400); - col.setLabelProvider(new DistTreeLabelProvider()); - - final Tree tree = viewer.getTree(); - tree.setHeaderVisible(false); - tree.setLinesVisible(false); - - // viewer.setContentProvider(new DistTreeContentProvider()); - viewer.setContentProvider(treeContentProvider); - viewer.addDoubleClickListener(new DistTreeDoubleClickListener(viewer)); - viewer.setComparer(new DistTreeComparer()); - viewer.setComparator(new DistTreeComparator()); - - @SuppressWarnings("unused") - ViewerComparator vc = viewer.getComparator(); - - // Enable retrieving current tree selected items from outside the view - getSite().setSelectionProvider(viewer); - - MenuManager menuManager = new MenuManager(); - Menu menu = menuManager.createContextMenu(viewer.getTree()); - menuManager.addMenuListener(new IMenuListener() { - private static final long serialVersionUID = -1454108001335038652L; - - public void menuAboutToShow(IMenuManager manager) { - contextMenuAboutToShow(manager); - } - }); - viewer.getTree().setMenu(menu); - getSite().registerContextMenu(menuManager, viewer); - - // Initialize - refresh(); - } - - /** Programatically configure the context menu */ - protected void contextMenuAboutToShow(IMenuManager menuManager) { - IWorkbenchWindow window = DistPlugin.getDefault().getWorkbench() - .getActiveWorkbenchWindow(); - - // Most of the implemented commands support only one selected - // element - boolean singleElement = ((IStructuredSelection) viewer.getSelection()) - .size() == 1; - // Get Current selected item : - Object firstElement = ((IStructuredSelection) viewer.getSelection()) - .getFirstElement(); - - try { - - if (firstElement instanceof TreeParent - || firstElement instanceof DistParentElem) { - - String targetRepoPath = null, workspaceName = null, workspacePrefix = null; - String modularDistBasePath = null; - String modularDistPath = null; - // String targetRepoUri = null; - // Build conditions depending on element type - boolean isDistribElem = false, isModularDistVersionBaseElem = false, isRepoElem = false, isDistribGroupElem = false; - boolean isLocal = false, isReadOnly = true; - - RepoElem re = null; - - if (firstElement instanceof RepoElem) { - re = (RepoElem) firstElement; - isRepoElem = true; - isLocal = re.inHome(); - isReadOnly = re.isReadOnly(); - } else if (firstElement instanceof WkspGroupElem) { - WkspGroupElem wge = (WkspGroupElem) firstElement; - isReadOnly = wge.isReadOnly(); - isDistribGroupElem = true; - re = (RepoElem) wge.getParent(); - workspacePrefix = wge.getName(); - } else if (firstElement instanceof WorkspaceElem) { - WorkspaceElem we = (WorkspaceElem) firstElement; - re = we.getRepoElem(); - isDistribElem = true; - isReadOnly = we.isReadOnly(); - workspaceName = we.getWorkspaceName(); - isLocal = we.inHome(); - } else if (firstElement instanceof ModularDistVersionBaseElem) { - ModularDistVersionBaseElem mdbe = (ModularDistVersionBaseElem) firstElement; - isModularDistVersionBaseElem = true; - re = mdbe.getWkspElem().getRepoElem(); - isLocal = re.inHome(); - isReadOnly = re.isReadOnly(); - workspaceName = mdbe.getWkspElem().getWorkspaceName(); - modularDistBasePath = mdbe.getModularDistBase().getPath(); - } else if (firstElement instanceof ModularDistVersionElem) { - ModularDistVersionElem mdbe = (ModularDistVersionElem) firstElement; - re = mdbe.getWorkspaceElem().getRepoElem(); - isLocal = re.inHome(); - isReadOnly = re.isReadOnly(); - workspaceName = mdbe.getWorkspaceElem().getWorkspaceName(); - modularDistPath = mdbe.getModularDistVersionNode() - .getPath(); - } - - if (re != null) { - targetRepoPath = re.getRepoNodePath(); - } - - // Display repo info - CommandUtils.refreshCommand(menuManager, window, - DisplayRepoInformation.ID, - DisplayRepoInformation.DEFAULT_LABEL, - DisplayRepoInformation.DEFAULT_ICON, isRepoElem - && singleElement); - - // create workspace - Map params = new HashMap(); - params.put(CreateWorkspace.PARAM_TARGET_REPO_PATH, - targetRepoPath); - params.put(CreateWorkspace.PARAM_WORKSPACE_PREFIX, - workspacePrefix); - CommandUtils.refreshParameterizedCommand(menuManager, window, - CreateWorkspace.ID, CreateWorkspace.DEFAULT_LABEL, - CreateWorkspace.DEFAULT_ICON, - (isRepoElem || isDistribGroupElem) && singleElement - && !isReadOnly && !isLocal, params); - - // TODO Manage the case where it is not a java workspace - params = new HashMap(); - params.put(CreateLocalJavaWorkspace.PARAM_WORKSPACE_PREFIX, - workspacePrefix); - CommandUtils.refreshParameterizedCommand(menuManager, window, - CreateLocalJavaWorkspace.ID, - CreateLocalJavaWorkspace.DEFAULT_LABEL, - CreateLocalJavaWorkspace.DEFAULT_ICON, - (isRepoElem || isDistribGroupElem) && singleElement - && !isReadOnly && isLocal, params); - - // Register a remote repository - CommandUtils.refreshCommand(menuManager, window, - RegisterRepository.ID, - RegisterRepository.DEFAULT_LABEL, - RegisterRepository.DEFAULT_ICON, isRepoElem - && singleElement); - - // Unregister a remote repository - params = new HashMap(); - params.put(UnregisterRemoteRepo.PARAM_REPO_PATH, targetRepoPath); - CommandUtils.refreshParameterizedCommand(menuManager, window, - UnregisterRemoteRepo.ID, - UnregisterRemoteRepo.DEFAULT_LABEL, - UnregisterRemoteRepo.DEFAULT_ICON, isRepoElem - && !isLocal && singleElement, params); - - // Fetch repository - params = new HashMap(); - params.put(Fetch.PARAM_TARGET_REPO_PATH, targetRepoPath); - CommandUtils.refreshParameterizedCommand(menuManager, window, - Fetch.ID, Fetch.DEFAULT_LABEL, Fetch.DEFAULT_ICON, - isRepoElem && isLocal && singleElement && !isReadOnly, - params); - - // Normalize workspace - params = new HashMap(); - params.put(NormalizeWorkspace.PARAM_TARGET_REPO_PATH, - targetRepoPath); - params.put(NormalizeWorkspace.PARAM_WORKSPACE_NAME, - workspaceName); - - CommandUtils.refreshParameterizedCommand(menuManager, window, - NormalizeWorkspace.ID, "Normalize...", - NormalizeWorkspace.DEFAULT_ICON, isDistribElem - && singleElement && !isReadOnly, params); - - // Copy workspace - params = new HashMap(); - params.put(CopyWorkspace.PARAM_TARGET_REPO_PATH, targetRepoPath); - params.put(CopyWorkspace.PARAM_SOURCE_WORKSPACE_NAME, - workspaceName); - CommandUtils.refreshParameterizedCommand(menuManager, window, - CopyWorkspace.ID, CopyWorkspace.DEFAULT_LABEL, - CopyWorkspace.DEFAULT_ICON, isDistribElem - && singleElement && !isLocal, params); - - params = new HashMap(); - params.put(CopyLocalJavaWorkspace.PARAM_SOURCE_WORKSPACE_NAME, - workspaceName); - CommandUtils.refreshParameterizedCommand(menuManager, window, - CopyLocalJavaWorkspace.ID, - CopyLocalJavaWorkspace.DEFAULT_LABEL, - CopyLocalJavaWorkspace.DEFAULT_ICON, isDistribElem - && singleElement && isLocal, params); - - // Clear Workspace - params = new HashMap(); - params.put(DeleteWorkspace.PARAM_TARGET_REPO_PATH, - targetRepoPath); - params.put(DeleteWorkspace.PARAM_WORKSPACE_NAME, workspaceName); - CommandUtils.refreshParameterizedCommand(menuManager, window, - DeleteWorkspace.ID, DeleteWorkspace.DEFAULT_LABEL, - DeleteWorkspace.DEFAULT_ICON, isDistribElem - && singleElement && !isReadOnly, params); - - // Advanced submenu - MenuManager submenu = new MenuManager("Advanced", - DistPlugin.PLUGIN_ID + ".advancedSubmenu"); - IContributionItem ici = menuManager.find(DistPlugin.PLUGIN_ID - + ".advancedSubmenu"); - if (ici != null) - menuManager.remove(ici); - - // Publish workspace - params = new HashMap(); - params.put(PublishWorkspace.PARAM_TARGET_REPO_PATH, - targetRepoPath); - params.put(PublishWorkspace.PARAM_WORKSPACE_NAME, workspaceName); - CommandUtils.refreshParameterizedCommand(submenu, window, - PublishWorkspace.ID, PublishWorkspace.DEFAULT_LABEL, - PublishWorkspace.DEFAULT_ICON, isDistribElem - && singleElement && !isReadOnly, params); - - // Normalize distribution (Legacy) - params = new HashMap(); - params.put(NormalizeDistribution.PARAM_TARGET_REPO_PATH, - targetRepoPath); - params.put(NormalizeDistribution.PARAM_WORKSPACE_NAME, - workspaceName); - CommandUtils.refreshParameterizedCommand(submenu, window, - NormalizeDistribution.ID, - NormalizeDistribution.DEFAULT_LABEL, - NormalizeDistribution.DEFAULT_ICON, isDistribElem - && singleElement && !isReadOnly, params); - - // Run in OSGi - params = new HashMap(); - params.put(RunInOsgi.PARAM_MODULE_PATH, modularDistPath); - params.put(RunInOsgi.PARAM_WORKSPACE_NAME, workspaceName); - CommandUtils.refreshParameterizedCommand(submenu, window, - RunInOsgi.ID, RunInOsgi.DEFAULT_LABEL, - RunInOsgi.DEFAULT_ICON, modularDistPath != null - && singleElement && isLocal, params); - - // Open generate binaries - params = new HashMap(); - params.put(OpenGenerateBinariesWizard.PARAM_REPO_NODE_PATH, - targetRepoPath); - params.put(OpenGenerateBinariesWizard.PARAM_MODULE_PATH, - modularDistBasePath); - params.put(OpenGenerateBinariesWizard.PARAM_WORKSPACE_NAME, - workspaceName); - - CommandUtils.refreshParameterizedCommand(submenu, window, - OpenGenerateBinariesWizard.ID, - OpenGenerateBinariesWizard.DEFAULT_LABEL, - OpenGenerateBinariesWizard.DEFAULT_ICON, - isModularDistVersionBaseElem && !isReadOnly, params); - - if (submenu.getSize() > 0) - menuManager.add(submenu); - - // // Manage workspace authorizations - // params = new HashMap(); - // params.put(ManageWorkspaceAuth.PARAM_WORKSPACE_NAME, wsName); - // CommandHelpers.refreshParameterizedCommand(menuManager, - // window, - // ManageWorkspaceAuth.ID, ManageWorkspaceAuth.DEFAULT_LABEL, - // ManageWorkspaceAuth.DEFAULT_ICON_PATH, isDistribElem - // && singleElement && !isReadOnly, params); - } - } catch (RepositoryException e) { - throw new SlcException("unexpected errror while " - + "building context menu for element " + firstElement, e); - } - } - - @Override - public void setFocus() { - viewer.getTree().setFocus(); - } - - /** - * Force refresh of the whole view - */ - public void refresh() { - viewer.setInput(nodeRepository); - viewer.expandToLevel(2); - } - - /* DEPENDENCY INJECTION */ - public void setNodeRepository(Repository nodeRepository) { - this.nodeRepository = nodeRepository; - } - - public void setTreeContentProvider( - DistTreeContentProvider treeContentProvider) { - this.treeContentProvider = treeContentProvider; - } -} \ No newline at end of file