1 11 package org.eclipse.pde.internal.ui.wizards; 12 13 import org.eclipse.core.runtime.IPath; 14 import org.eclipse.jdt.core.IClasspathContainer; 15 import org.eclipse.jdt.core.IClasspathEntry; 16 import org.eclipse.jdt.core.IJavaProject; 17 import org.eclipse.jdt.core.JavaCore; 18 import org.eclipse.jdt.core.JavaModelException; 19 import org.eclipse.jdt.ui.JavaUI; 20 import org.eclipse.jdt.ui.wizards.IClasspathContainerPage; 21 import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension; 22 import org.eclipse.jface.dialogs.Dialog; 23 import org.eclipse.jface.viewers.IStructuredContentProvider; 24 import org.eclipse.jface.viewers.ITableLabelProvider; 25 import org.eclipse.jface.viewers.LabelProvider; 26 import org.eclipse.jface.viewers.TableViewer; 27 import org.eclipse.jface.viewers.ViewerComparator; 28 import org.eclipse.jface.wizard.WizardPage; 29 import org.eclipse.pde.core.plugin.IPluginModelBase; 30 import org.eclipse.pde.core.plugin.PluginRegistry; 31 import org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer; 32 import org.eclipse.pde.internal.ui.IHelpContextIds; 33 import org.eclipse.pde.internal.ui.PDEPluginImages; 34 import org.eclipse.pde.internal.ui.PDEUIMessages; 35 import org.eclipse.pde.internal.ui.elements.DefaultContentProvider; 36 import org.eclipse.pde.internal.ui.wizards.plugin.ClasspathComputer; 37 import org.eclipse.swt.SWT; 38 import org.eclipse.swt.graphics.Image; 39 import org.eclipse.swt.layout.GridData; 40 import org.eclipse.swt.layout.GridLayout; 41 import org.eclipse.swt.widgets.Composite; 42 import org.eclipse.swt.widgets.Label; 43 import org.eclipse.ui.PlatformUI; 44 import org.eclipse.ui.ide.IDE; 45 46 public class RequiredPluginsContainerPage 47 extends WizardPage 48 implements IClasspathContainerPage, IClasspathContainerPageExtension { 49 private IClasspathEntry entry; 50 private TableViewer viewer; 51 private Image projectImage; 52 private Image libraryImage; 53 private Image slibraryImage; 54 private IClasspathEntry[] realEntries; 55 private IJavaProject javaProject; 56 57 class EntryContentProvider 58 extends DefaultContentProvider 59 implements IStructuredContentProvider { 60 public Object [] getElements(Object parent) { 61 if (realEntries != null) 62 return realEntries; 63 return new Object [0]; 64 } 65 } 66 67 76 class EntryLabelProvider 77 extends LabelProvider 78 implements ITableLabelProvider { 79 public String getText(Object obj) { 80 IClasspathEntry entry = (IClasspathEntry) obj; 81 int kind = entry.getEntryKind(); 82 if (kind == IClasspathEntry.CPE_PROJECT) 83 return entry.getPath().segment(0); 84 IPath path = entry.getPath(); 85 String name = path.lastSegment(); 86 return name 87 + " - " + path.uptoSegment(path.segmentCount() - 1).toOSString(); 89 } 90 91 public Image getImage(Object obj) { 92 IClasspathEntry entry = (IClasspathEntry) obj; 93 int kind = entry.getEntryKind(); 94 if (kind == IClasspathEntry.CPE_PROJECT) 95 return projectImage; 96 else if (kind == IClasspathEntry.CPE_LIBRARY) { 97 IPath sourceAtt = entry.getSourceAttachmentPath(); 98 return sourceAtt!=null?slibraryImage:libraryImage; 99 } 100 return null; 101 } 102 public String getColumnText(Object obj, int col) { 103 return getText(obj); 104 } 105 public Image getColumnImage(Object obj, int col) { 106 return getImage(obj); 107 } 108 } 109 112 public RequiredPluginsContainerPage() { 113 super("requiredPluginsContainerPage"); setTitle(PDEUIMessages.RequiredPluginsContainerPage_title); 115 setDescription(PDEUIMessages.RequiredPluginsContainerPage_desc); 116 projectImage = 117 PlatformUI.getWorkbench().getSharedImages().getImage( 118 IDE.SharedImages.IMG_OBJ_PROJECT); 119 libraryImage = 121 JavaUI.getSharedImages().getImage( 122 org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_EXTERNAL_ARCHIVE); 123 slibraryImage = 124 JavaUI.getSharedImages().getImage( 125 org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_EXTERNAL_ARCHIVE_WITH_SOURCE); 126 setImageDescriptor(PDEPluginImages.DESC_CONVJPPRJ_WIZ); 127 } 128 129 133 public void createControl(Composite parent) { 134 Composite container = new Composite(parent, SWT.NULL); 135 container.setLayout(new GridLayout()); 136 Label label = new Label(container, SWT.NULL); 137 label.setText(PDEUIMessages.RequiredPluginsContainerPage_label); 138 viewer = 139 new TableViewer( 140 container, 141 SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); 142 viewer.setContentProvider(new EntryContentProvider()); 143 viewer.setLabelProvider(new EntryLabelProvider()); 144 viewer.setComparator(new ViewerComparator()); 145 146 GridData gd = new GridData(GridData.FILL_BOTH); 147 gd.widthHint = 400; 148 gd.heightHint = 300; 149 viewer.getTable().setLayoutData(gd); 150 151 PlatformUI.getWorkbench().getHelpSystem().setHelp( 152 container, 153 IHelpContextIds.PLUGINS_CONTAINER_PAGE); 154 setControl(container); 155 Dialog.applyDialogFont(container); 156 if (realEntries != null) 157 initializeView(); 158 159 PlatformUI.getWorkbench().getHelpSystem().setHelp(container, IHelpContextIds.REQUIRED_PLUINGS_CONTAINER); 160 } 161 162 166 public boolean finish() { 167 return true; 168 } 169 170 174 public IClasspathEntry getSelection() { 175 return entry; 176 } 177 178 public void initialize( 179 IJavaProject project, 180 IClasspathEntry[] currentEntries) { 181 javaProject = project; 182 } 183 184 188 public void setSelection(IClasspathEntry containerEntry) { 189 this.entry = containerEntry; 190 createRealEntries(); 191 if (viewer != null) 192 initializeView(); 193 } 194 195 private void createRealEntries() { 196 IJavaProject javaProject = getJavaProject(); 197 if (javaProject == null) { 198 realEntries = new IClasspathEntry[0]; 199 return; 200 } 201 202 if (entry == null) { 203 entry = ClasspathComputer.createContainerEntry(); 204 IPluginModelBase model = PluginRegistry.findModel(javaProject.getProject()); 205 if (model != null) { 206 IClasspathContainer container = new RequiredPluginsClasspathContainer(model); 207 if (container!=null) 208 realEntries = container.getClasspathEntries(); 209 } 210 } else { 211 try { 212 IClasspathContainer container = 213 JavaCore.getClasspathContainer( 214 entry.getPath(), 215 javaProject); 216 if (container != null) 217 realEntries = container.getClasspathEntries(); 218 } catch (JavaModelException e) { 219 } 220 } 221 if (realEntries == null) 222 realEntries = new IClasspathEntry[0]; 223 } 224 225 private IJavaProject getJavaProject() { 226 return javaProject; 227 } 228 229 private void initializeView() { 230 viewer.setInput(entry); 231 } 232 } 233 | Popular Tags |