KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > pde > internal > ui > wizards > RequiredPluginsContainerPage


1 /*******************************************************************************
2  * Copyright (c) 2000, 2007 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

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 JavaDoc[] getElements(Object JavaDoc parent) {
61             if (realEntries != null)
62                 return realEntries;
63             return new Object JavaDoc[0];
64         }
65     }
66
67 // class EntrySorter extends ViewerSorter {
68
// public int category(Object obj) {
69
// IClasspathEntry entry = (IClasspathEntry) obj;
70
// return entry.getEntryKind() == IClasspathEntry.CPE_PROJECT
71
// ? -10
72
// : 0;
73
// }
74
// }
75

76     class EntryLabelProvider
77         extends LabelProvider
78         implements ITableLabelProvider {
79         public String JavaDoc getText(Object JavaDoc 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 JavaDoc name = path.lastSegment();
86             return name
87                 + " - " //$NON-NLS-1$
88
+ path.uptoSegment(path.segmentCount() - 1).toOSString();
89         }
90
91         public Image getImage(Object JavaDoc 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 JavaDoc getColumnText(Object JavaDoc obj, int col) {
103             return getText(obj);
104         }
105         public Image getColumnImage(Object JavaDoc obj, int col) {
106             return getImage(obj);
107         }
108     }
109     /**
110      * The constructor.
111      */

112     public RequiredPluginsContainerPage() {
113         super("requiredPluginsContainerPage"); //$NON-NLS-1$
114
setTitle(PDEUIMessages.RequiredPluginsContainerPage_title);
115         setDescription(PDEUIMessages.RequiredPluginsContainerPage_desc);
116         projectImage =
117             PlatformUI.getWorkbench().getSharedImages().getImage(
118                 IDE.SharedImages.IMG_OBJ_PROJECT);
119         //libraryImage = PDEPluginImages.DESC_BUILD_VAR_OBJ.createImage();
120
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     /**
130      * Insert the method's description here.
131      * @see WizardPage#createControl
132      */

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     /**
163      * Insert the method's description here.
164      * @see WizardPage#finish
165      */

166     public boolean finish() {
167         return true;
168     }
169
170     /**
171      * Insert the method's description here.
172      * @see WizardPage#getSelection
173      */

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     /**
185      * Insert the method's description here.
186      * @see WizardPage#setSelection
187      */

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