...
...
Platform
- #Where can I get more information about the Eclipse Java compiler?
- #Why does Eclipse complain about an already running instance?
- #How does Eclipse load classes?
Plugin Development
Configuration
- #What information do MANIFEST.MF and plugin.xml contain?
- #What happens if I do NOT check "Activate this plug-in when one of its classes is loaded"?
- #How do I create a plugin project that uses an existing SEAL plugin?
- #How do I add a third-party library to SEAL?
- #How do I create a product?
...
- #How can I launch the Eclipse web browser from my plugin?
- #How can my view save data via Eclipse main menu (FILE => Save or Save As...)?
- #How can I notify Eclipse about the change of in "dirty"-ness of my WorkbenchPart?
- #What happens when a view is closed?
- #How do I access a file in the plugin programmatically?
- #How can I manipulate the main workbench menu at runtime?
- #How do I make open an error dialog pop up?
Build process
Deployment
- #What should I know about my plugin build configuration?
- #In build.properties, I specified to build a JAR #In build.properties, I specified to build a JAR file from my plugin sources. When I deploy my plugin, a class can not be found. What am I doing wrong?
- #How do I generate Javadoc with links to APIs on the web?
- #Should I deploy my pure Java plugin as a JAR file or as a directory?
SWT
- #How can I correctly change the background/foreground color of a button?
- #What are the SWT threading issuesshould I know about SWT and threads?
- #How do I create a scrollable widget?
...
- #What are the Eclipse runtime options?
- #Some Eclipse plugins are JAR files, others are sub-directories. What's the difference?
- #How does Eclipse generate the ANT build script (aka build.xml)?
- #Where can I find a copy of the OSGi specification?
General
...
General
Why Why does this FAQ exist?
Answered by Sergei Chevtsov, 06-14-2007
...
Link verified by Sergei Chevtsov, 06-11-2007
http://help.eclipse.org/help32help33/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/preference_pages/source_code_locations.htmhttp://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tasks/pde_source_generation.htm
A source feature is useful for delivering source code to a developer via Eclipse infrastructure.
...
Platform
Where can I get more information about the Eclipse Java compiler?
Answered by Sergei Chevtsov, 06-08-2007
http://help.eclipse.org/help32help33/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm
Eclipse uses its own Java compiler that is more flexible than Sun's.
...
(Let's assume that you actually don't have a running instance of Eclipse)
Sometimes when Eclipse exits, it doesn't delete the .metadata/.lock file in your workspace. If you are sure what you're doing, rm it manually.
...
How does Eclipse load classes?
Answered by Sergei Chevtsov, 08-15-2007
Eclipse utilizes many of its own classloaders.
http://www.eclipsezone.com/articles/eclipse-vms/
...
Plugin Development
What information do MANIFEST.MF and plugin.xml contain?
...
http://www-128.ibm.com/developerworks/opensource/library/os-ecl-osgi/#N10091
MANIFEST.MF contains the description of the plugin description.
plugin.xml defines extensions that the plugin contributes (thus, is optional).
How do I create a plugin project that uses an existing SEAL plugin?
might contribute.
...
What happens if I do NOT check "Activate this plug-in when one of its classes is loaded"?
Link verified Answered by Sergei Chevtsov, 0608-0816-2007
1. Setup SEAL target. http://wwwhelp.slaceclipse.stanford.eduorg/grp/lcls/controls/docs/physics/seal/sealdev.html#target
2. Create a new plugin project in your workspace.
3. Open the MANIFEST.MF file from the META-INF directory.
4. Choose the DEPENDENCIES tab at the bottom of your editor.
5. Click on ADD... in the "Required Plug-ins" section and select the ID of the desired SEAL plug-inhelp33/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/bundle_manifest.html
Your MANIFEST.MF file will NOT contain the element "Eclipse-LazyStart: true", and the plugin will be activated when the Eclipse platform starts.
...
How do I
...
create a plugin project that uses an existing SEAL plugin?
Answered by Sergei Chevtsov, 06-08-2007
1. Check out the project "external" from our CVS.
2. Copy your JAR file and the corresponding ZIP file with source code to the top directory of "external".
3. Add your JAR file to the build path of "external". Don't forget to check its "exported" box!
4. Attach source from the ZIP file and specify Javadoc location on the web for the library.
5. Open the MANIFEST.MF file from the META-INF directory of "external".
6. Choose the RUNTIME tab at the bottom of your editor.
7. Click on ADD.. in the "Exported Packages" section and select all desired packages.
8. Click on ADD... in the "Classpath" section and select the new JAR file.
9. Commit "external" to CVS.
How do I create a product?
Answered by Sergei Chevtsov, 07-30-2007
http://wiki.eclipse.org/FAQ_How_do_I_create_an_Eclipse_product%3F
We recommend that you switch skip step 2 and press "NEW..." in the overview section of your product file , i.e.:
1. Create a plugin for your product (File > New > Other > Plug-in Development > Plug-in Project).
2. Create a product configuration file (File > New > Other > Plugin Development > Product Configuration). Specify the product id as defined in your plugin manifest. On the "Configuration" tab, list all the plugins belonging to the product. You can also list branding information like the splash screen, icons, the name of your executable, etc.
3. Use the Product export wizard (link from the product editor, or under File > Export) to build, package, and deploy your product.
4. Launch the exe created by the product export (or run plain eclipse.exe with the -product argument to refer to your product).
How can I launch the Eclipse web browser from my plugin?
. Setup SEAL target. http://www.slac.stanford.edu/grp/lcls/controls/docs/physics/seal/sealdev.html#target
2. Create a new plugin project in your workspace.
3. Open the MANIFEST.MF file from the META-INF directory.
4. Choose the DEPENDENCIES tab at the bottom of your editor.
5. Click on ADD... in the "Required Plug-ins" section and select the ID of the desired SEAL plug-in.
...
How do I add a third-party library to SEAL?
Answered by Sergei Chevtsov, 06-08-2007
1. Check out the project "external" from our CVS.
2. Copy your JAR file and, if applicable, the corresponding ZIP file with source code to the top directory of "external".
Some guidelines about naming source ZIP files: http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/preference_pages/source_code_locations.htm
3. Open the MANIFEST.MF file from the META-INF directory of "external".
4. Choose the RUNTIME tab at the bottom of your editor.
5. Click on ADD... in the "Classpath" section and select the new JAR file.
6. Click on ADD.. in the "Exported Packages" section and select all desired packages.
7. Optional: in the build path configuration dialog of the project, attach source from the ZIP file and specify Javadoc location of the library
8. Commit "external" to CVS.
...
How do I create a product?
Answered by Sergei Chevtsov, 07-30Link verified by Sergei Chevtsov, 06-08-2007
http://wiki.eclipse.org/index.php?title=FAQ_How_cando_I_invokecreate_thean_eclipse_default_web_browser_in_my_own_plugin?
IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();
IWebBrowser browser = support.createBrowser("someId");
browser.openURL(new URL("http://www.eclipse.org"));
How can my view save data via Eclipse main menu (FILE => Save or Save As...)?
Answered by Sergei Chevtsov, 06-13-2007
Your view must implement ISaveablePart.
Note #1: An editor already implements ISaveablePart.
Note #2: I am not saying that this always is the correct way to save data from a view.
How can I notify Eclipse about the change of "dirty"-ness of my WorkbenchPart?
Answered by Sergei Chevtsov, 07-11-2007
0. Make sure that your WorkbenchPart implements ISaveablePart.
1. Call WorkbenchPart.firePropertyChange(ISaveablePart.PROP_DIRTY).
...
We recommend that you skip step 2 and press "NEW..." in the overview section of your product file , i.e.:
1. Create a plugin for your product (File > New > Other > Plug-in Development > Plug-in Project).
2. Create a product configuration file (File > New > Other > Plugin Development > Product Configuration). Specify the product id as defined in your plugin manifest. On the "Configuration" tab, list all the plugins belonging to the product. You can also list branding information like the splash screen, icons, the name of your executable, etc.
3. Use the Product export wizard (link from the product editor, or under File > Export) to build, package, and deploy your product.
4. Launch the executable created by the product export (or run plain it with the -product argument to refer to your product).
...
How can I launch the Eclipse web browser from my plugin?
Link verified by Sergei Chevtsov, 06-08-2007
IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();
IWebBrowser browser = support.createBrowser("someId");
browser.openURL(new URL("http://www.eclipse.org"));
...
How can my view save data via Eclipse main menu (FILE => Save or Save As...)?
Answered by Sergei Chevtsov, 06-13-2007
http://wwwhelp.eclipse.org/articleshelp33/viewArticlenftopic/ViewArticle2.html
When the view is closed the lifecycle is completed.
1. The parent Composite passed to createPartControl is disposed. This children are also implicitly disposed. If you wish to run any code at this time, you must hook the control dispose event.
2. The IViewPart.dispose method is called to terminate the part lifecycle. This is the last method which the workbench will call on the part. It is an ideal time to release any fonts, images, etc.
Note: Although the article is old, this behavior is still valid.
...
org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/ISaveablePart.html
Your view must implement ISaveablePart.
Note #1: An editor already implements ISaveablePart.
Note #2: I am not saying that this always is the correct way to save data from a view.
...
How can I notify Eclipse about the change in "dirty"-ness of my WorkbenchPart?
Answered by Sergei Chevtsov, 0607-1411-2007
Basically, use FileLocator .
Similar methods in other classes are deprecated and call FileLocator anyway.
To get a Bundle instance associated with the desired plugin, use ((Plugin)myPlugin).getBundle().
If you can't access the instance of the desired Plugin, then (in addition to yelling at the plugin developer ) use Platform.getBundle(symbolicName) where "symbolicName" is specified in the plugin's MANIFEST.MF file.
Finally, use new Path(myPath), where "myPath" is relative to the plugin's top directory, to get an instance of IPath.
...
0. Make sure that your WorkbenchPart implements ISaveablePart.
1. Call WorkbenchPart.firePropertyChange(ISaveablePart.PROP_DIRTY).
...
What happens when a view is closed?
Answered by Sergei Chevtsov, 06-13-2007
http://www.eclipse.org/articles/viewArticle/ViewArticle2.html
When the view is closed the lifecycle is completed.
1. The parent Composite passed to createPartControl is disposed. This children are also implicitly disposed. If you wish to run any code at this time, you must hook the control dispose event.
2. The IViewPart.dispose method is called to terminate the part lifecycle. This is the last method which the workbench will call on the part. It is an ideal time to release any fonts, images, etc.
Note: Although the article is old, this behavior is still valid.
...
How do I access a file in the plugin programmatically?
Answered by Sergei Chevtsov, 06-14-2007
Basically, use FileLocator .
Similar methods in other classes are deprecated and call FileLocator anyway.
To get a Bundle instance associated with the desired plugin, use ((Plugin)myPlugin).getBundle().
If you can't access the instance of the desired Plugin, then (in addition to yelling at the plugin developer ) use Platform.getBundle(symbolicName) where "symbolicName" is specified in the plugin's MANIFEST.MF file.
Finally, use new Path(myPath), where "myPath" is relative to the plugin's top directory, to get an instance of IPath.
...
How can I manipulate the main workbench menu at runtime?
Answered by Sergei Chevtsov, 06-14-2007
http://wiki.eclipse.org/index.php/Menu_Contributions
Not possible yet, but should be in Eclipse 3.3.
...
How do I open an error dialog?
Answered by Sergei Chevtsov, 07-25-2007
Use ErrorDialog, e.g.:
ErrorDialog.openError(shell, title, null, new Status(IStatus.ERROR, pluginId, IStatus.OK, localizedMessage, exception));
Note: localizedMessage must not be null!
...
How do I set a retargetable action?
Answered by Sergei Chevtsov, 10-22-2007
Use getViewSite().getActionBars().setGlobalActionHandler(IAction).
...
What should I know about my plugin build configuration?
Answered by Sergei Chevtsov, 09-06-14-2007
http://wikihelp.eclipse.org/index.php/Menu_Contributions
Not possible yet, but should be in Eclipse 3.3.
How do I make an error dialog pop up?
Answered by Sergei Chevtsov, 07-25-2007
Use ErrorDialog, e.g.:
ErrorDialog.openError(shell, title, null, new Status(IStatus.ERROR, pluginId, IStatus.OK, localizedMessage, exception));
/help33/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/editors/manifest_editor/build.htm
Pay special attention to where your class files will land.Note: localizedMessage must not be null!
...
In build.properties, I specified to build a JAR file from my plugin sources. When I deploy my plugin, a class can not be found. What am I doing wrong?
...
Answered by Sergei Chevtsov, 07-20-2007
0. If your Javadoc has already been generated using this method:
- 1. Remove existing Javadoc files.
- 2. Go to step 4.
1. Use the Export Wizard to generate Javadoc for your classes. Check "Save the settings as an Ant script" on the last page.
Note: The generated Ant script will have hard-coded classpath, i.e. if you have a required plugin checked out into your workspace, the script won't work next time, unless you check that plugin out, too. To avoid headache, we advise that you close all projects, except the one that you generate JavaDoc for.
2. Open javadoc.xml.
3. For each external API, add the following line as child of <javadoc> element:
<link href="url to the API directory on the web" />
Some of the most common URLs are:
JDK => http://java.sun.com/j2se/1.5.0/docs/api/
Eclipse => http://help.eclipse.org/help32help33/nftopic/org.eclipse.platform.doc.isv/reference/api/
SEAL plugin => http://www.slac.stanford.edu/grp/lcls/controls/docs/physics/sealPLUGIN_NAME/javadoc/
4. Right click javadoc.xml => "Run As" => "Ant Build".
5. Don't ever use the Export Wizard to generate Javadoc again.
...
First, you need to know that your plugin will *run* either way, although Eclipse folks claim that performance might differ (surprisingly, JAR-ed plugins are supposed to be better =>
http://www.eclipsezone.com/eclipse/forums/m91980917.html#91980917).
If that's all your plugin is intended for, the choice seems to be entirely up to you.
However, some plugins can be used by other plugins; such plugins expose packages to the clients. You must create a JAR file for a plugin that exposes packages, so that Eclipse's Plug-in Development Environment can locate the exported classes.
Note: if your plugin uses an external library, put it into edu.stanford.slac.external plugin and make that plugin required by your plugin.
...
SWT
How can I correctly change the background/foreground color of a button?
Answered by Sergei Chevtsov, 06-08-2007
Surprisingly, you can't.
...
What
...
should I know about SWT and threads?
Answered by Sergei Chevtsov, 06-13-2007
http://help.eclipse.org/help32help33/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/swt_threading.htm
You can only access SWT widgets from a UI thread.
...
Link verified by Sergei Chevtsov, 07-11-2007
http://help.eclipse.org/help32help33/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html
Some of the most useful options are: clean, console, debug (note: it actually enables tracing only), nl, noSplash, password, vm, vmArgs.
...
Link verified by Sergei Chevtsov, 06-11-2007
http://help.eclipse.org/help32help33/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tasks/pde_feature_generating_ant.htm
It uses build.properties from your plugin's top directory.
...
Since you have to register to download it from http://www2.osgi.org/Specifications/HomePage, here is a local copy: r4.core.pdf
...
How can I add functionality to the Eclipse platform?
Answered by Sergei Chevtsov, 06-11-2007
Use adaptor hooks.
http://wiki.eclipse.org/index.php/Adaptor_Hooks
...
The space below is intentionally left blank.