1 /******************************************************************************* 2 * Copyright (c) 2007, 2017 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 * Genuitec, LLC - added license support 14 *******************************************************************************/ 15 package org.eclipse.equinox.internal.p2.ui.admin; 16 17 import java.util.List; 18 import org.eclipse.equinox.internal.p2.ui.ProvUIProvisioningListener; 19 import org.eclipse.equinox.internal.p2.ui.QueryableMetadataRepositoryManager; 20 import org.eclipse.equinox.internal.p2.ui.admin.dialogs.AddMetadataRepositoryDialog; 21 import org.eclipse.equinox.internal.p2.ui.admin.preferences.PreferenceConstants; 22 import org.eclipse.equinox.internal.p2.ui.model.MetadataRepositories; 23 import org.eclipse.equinox.internal.p2.ui.query.IUViewQueryContext; 24 import org.eclipse.equinox.internal.p2.ui.viewers.IUDragAdapter; 25 import org.eclipse.equinox.p2.operations.RepositoryTracker; 26 import org.eclipse.equinox.p2.repository.IRepositoryManager; 27 import org.eclipse.equinox.p2.ui.Policy; 28 import org.eclipse.jface.action.IMenuManager; 29 import org.eclipse.jface.action.Separator; 30 import org.eclipse.jface.viewers.TreeViewer; 31 import org.eclipse.swt.dnd.*; 32 import org.eclipse.swt.widgets.Shell; 33 import org.eclipse.ui.part.PluginTransfer; 34 35 /** 36 * This view allows users to interact with metadata repositories 37 * 38 * @since 3.4 39 */ 40 public class MetadataRepositoriesView extends RepositoriesView { 41 42 private InstallAction installAction; 43 private RepositoryTracker tracker; 44 MetadataRepositories input; 45 46 /** 47 * The constructor. 48 */ MetadataRepositoriesView()49 public MetadataRepositoriesView() { 50 // constructor 51 } 52 53 @Override getInput()54 protected Object getInput() { 55 if (input == null) { 56 // view by repo 57 IUViewQueryContext context = new IUViewQueryContext(IUViewQueryContext.AVAILABLE_VIEW_BY_REPO); 58 Policy policy = ProvAdminUIActivator.getDefault().getPolicy(); 59 context.setShowLatestVersionsOnly(policy.getShowLatestVersionsOnly()); 60 context.setShowInstallChildren(policy.getShowDrilldownRequirements()); 61 context.setShowProvisioningPlanChildren(policy.getShowDrilldownRequirements()); 62 context.setUseCategories(policy.getGroupByCategory()); 63 64 input = new MetadataRepositories(context, getProvisioningUI(), new QueryableMetadataRepositoryManager(getProvisioningUI(), false)); 65 } 66 return input; 67 } 68 69 @Override getAddCommandLabel()70 protected String getAddCommandLabel() { 71 return ProvAdminUIMessages.MetadataRepositoriesView_AddRepositoryLabel; 72 } 73 74 @Override getAddCommandTooltip()75 protected String getAddCommandTooltip() { 76 return ProvAdminUIMessages.MetadataRepositoriesView_AddRepositoryTooltip; 77 } 78 79 @Override getRemoveCommandTooltip()80 protected String getRemoveCommandTooltip() { 81 return ProvAdminUIMessages.MetadataRepositoriesView_RemoveRepositoryTooltip; 82 } 83 84 @Override openAddRepositoryDialog(Shell shell)85 protected int openAddRepositoryDialog(Shell shell) { 86 return new AddMetadataRepositoryDialog(shell, getProvisioningUI()).open(); 87 } 88 89 @Override makeActions()90 protected void makeActions() { 91 super.makeActions(); 92 installAction = new InstallAction(getProvisioningUI(), viewer); 93 } 94 95 @Override fillContextMenu(IMenuManager manager)96 protected void fillContextMenu(IMenuManager manager) { 97 if (installAction.isEnabled()) { 98 manager.add(new Separator()); 99 manager.add(installAction); 100 } 101 super.fillContextMenu(manager); 102 } 103 104 @Override configureViewer(final TreeViewer treeViewer)105 protected void configureViewer(final TreeViewer treeViewer) { 106 super.configureViewer(treeViewer); 107 // Add drag support for IU's 108 Transfer[] transfers = new Transfer[] {org.eclipse.jface.util.LocalSelectionTransfer.getTransfer(), PluginTransfer.getInstance(), TextTransfer.getInstance(),}; 109 treeViewer.addDragSupport(DND.DROP_COPY, transfers, new IUDragAdapter(treeViewer)); 110 } 111 getRepoFlags()112 protected int getRepoFlags() { 113 if (ProvAdminUIActivator.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.PREF_HIDE_SYSTEM_REPOS)) 114 return IRepositoryManager.REPOSITORIES_NON_SYSTEM; 115 return IRepositoryManager.REPOSITORIES_ALL; 116 } 117 118 @Override getListenerEventTypes()119 protected int getListenerEventTypes() { 120 return ProvUIProvisioningListener.PROV_EVENT_METADATA_REPOSITORY; 121 } 122 123 @Override getVisualProperties()124 protected List<String> getVisualProperties() { 125 List<String> list = super.getVisualProperties(); 126 list.add(PreferenceConstants.PREF_USE_CATEGORIES); 127 list.add(PreferenceConstants.PREF_COLLAPSE_IU_VERSIONS); 128 return list; 129 } 130 131 @Override updateCachesForPreferences()132 protected void updateCachesForPreferences() { 133 // We want to reconstruct the input's query context based on the latest preferences 134 input = null; 135 } 136 137 @Override getRepositoryTracker()138 protected RepositoryTracker getRepositoryTracker() { 139 if (tracker == null) 140 tracker = new MetadataRepositoryTracker(getProvisioningUI()); 141 return tracker; 142 } 143 } 144