1 11 12 package org.eclipse.ui.internal.navigator.extensions; 13 14 import java.util.ArrayList ; 15 import java.util.Iterator ; 16 import java.util.List ; 17 18 import org.eclipse.core.runtime.IConfigurationElement; 19 import org.eclipse.ui.IEditorInput; 20 import org.eclipse.ui.internal.navigator.NavigatorPlugin; 21 import org.eclipse.ui.navigator.INavigatorContentService; 22 23 34 public class LinkHelperManager { 35 36 private static final LinkHelperManager instance = new LinkHelperManager(); 37 38 private static final LinkHelperDescriptor[] NO_DESCRIPTORS = new LinkHelperDescriptor[0]; 39 40 private List descriptors; 41 42 45 public static LinkHelperManager getInstance() { 46 return instance; 47 } 48 49 private LinkHelperManager() { 50 new LinkHelperRegistry().readRegistry(); 51 } 52 53 66 public LinkHelperDescriptor[] getLinkHelpersFor( 67 Object anObject, 68 INavigatorContentService aContentService) { 69 70 List helpersList = new ArrayList (); 71 LinkHelperDescriptor descriptor = null; 72 for (Iterator itr = getDescriptors().iterator(); itr.hasNext();) { 73 descriptor = (LinkHelperDescriptor) itr.next(); 74 if (aContentService.isVisible(descriptor.getId()) 75 && descriptor.isEnabledFor(anObject)) { 76 helpersList.add(descriptor); 77 } 78 } 79 if (helpersList.size() == 0) { 80 return NO_DESCRIPTORS; 81 } 82 return (LinkHelperDescriptor[]) helpersList 83 .toArray(new LinkHelperDescriptor[helpersList.size()]); 84 85 } 86 87 100 public LinkHelperDescriptor[] getLinkHelpersFor(IEditorInput anInput, 101 INavigatorContentService aContentService) { 102 103 List helpersList = new ArrayList (); 104 LinkHelperDescriptor descriptor = null; 105 for (Iterator itr = getDescriptors().iterator(); itr.hasNext();) { 106 descriptor = (LinkHelperDescriptor) itr.next(); 107 if (aContentService.isVisible(descriptor.getId()) 108 && descriptor.isEnabledFor(anInput)) { 109 helpersList.add(descriptor); 110 } 111 } 112 if (helpersList.size() == 0) { 113 return NO_DESCRIPTORS; 114 } 115 return (LinkHelperDescriptor[]) helpersList 116 .toArray(new LinkHelperDescriptor[helpersList.size()]); 117 118 } 119 120 protected List getDescriptors() { 121 if (descriptors == null) { 122 descriptors = new ArrayList (); 123 } 124 return descriptors; 125 } 126 127 private class LinkHelperRegistry extends RegistryReader implements 128 ILinkHelperExtPtConstants { 129 130 private LinkHelperRegistry() { 131 super(NavigatorPlugin.PLUGIN_ID, LINK_HELPER); 132 } 133 134 public boolean readElement(IConfigurationElement element) { 135 if (LINK_HELPER.equals(element.getName())) { 136 try { 137 getDescriptors().add(new LinkHelperDescriptor(element)); 138 } catch (Throwable e) { 139 String msg = e.getMessage() != null ? e.getMessage() : e.toString(); 140 NavigatorPlugin.logError(0, msg, e); 141 } 142 return true; 143 } 144 return false; 145 } 146 } 147 } 148 | Popular Tags |