Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Π² eclipse

Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Π² eclipse


Developing the Eclipse «Hello World» plug-in

Summary
The traditional Hello World program doesn’t do that much, but it can be invaluable when exploring a new development environment. In this article we’ll develop the Eclipse Hello World plug-in and show you how to integrate it with the Eclipse Workbench. After you read this article you should know how to use the Eclipse Java™ Development Tooling to create, run, and debug a simple plug-in that extends the Eclipse Platform. You’ll see how to setup a project for your plug-in, edit the Java code, compile, and run or debug your plug-in in another launched copy of Eclipse. We’ll be looking at plug-in manifest files, extensions, and extension points to see how plug-ins are described to Eclipse and how they are integrated with the Platform.

By Jim Amsden, OTI
Updated September 6, 2002 for Eclipse release 2.0 by Andrew Irvine, OTI
Last revised January 28, 2003

This article describes Eclipse release 2.0, which differs in minor ways from the previous Eclipse release. If you are still working with Eclipse release 1.0, you should consult the original version of this article.

The Eclipse Plug-in Development Environment (PDE) project provides a very nice environment for creating plug-ins and integrating them with the Eclipse Platform and/or other plug-ins. We’re not proposing an alternative to PDE here. PDE is definitely the way to go. But sometimes its helpful to do things «by hand» in order to gain a more thorough understanding of how something works and how the pieces fit together. That’s the approach we’re going to take in this article. We’ll develop a very simple plug-in implementing the Eclipse version of the classic Hello World sample. This will allow us to focus on the relationships between the various components of Eclipse and our plug-in without getting bogged down in the details of the example itself. We’ll go raw as much as possible so we can see what’s actually happening under the covers. Hopefully this will give you a better understanding of Eclipse, help you make better use of PDE, and give you some idea where to look when things don’t go quite as planned.

The Problem

For the Eclipse Hello World program, let’s start out with a simple design. We’re going to add a button to the Workbench toolbar that when pressed, displays an information dialog containing the string «Hello World». Pressing OK dismisses the dialog. Nothing fancy, and certainly not anything that begins to exploit the full extensibility of Eclipse. But something we can easily use to get our feet wet. And it turns out that more complicated examples follow roughly the same pattern so we’ll get a lot out of this very simple example.

So lets get started! I’ll assume you’ve already downloaded the latest Eclipse code drop from eclipse.org, have it installed, and know how to start it up. If not, checkout the downloads page at the Eclipse site, and follow the instructions there.

Step 1: Getting ready to write Java code

Before we get started, we need to check some workbench preferences to make sure its configured properly for plug-in development. We’ll be setting other properties later in the article, but for now, let’s just set the default project layout and select the JRE we’re going to use.

Setting the default project layout : Edit the Java preferences by selecting the Window->Preferences menu item. Expand the Java list item. Click on the New Project item and check the Folders radio button. Ensure » Source folder name » is set to ‘src’ and that » Output folder name » is set to ‘bin’. If you do not alter this setting, all of the class files and source files will be placed in directories based at the root of the project. This is fine for small scale development, but is not the structure you want when constructing bigger programs.

Note: The Hello World plug-in assumes that the project layout has been altered to use ‘src’ and ‘bin’ folders. If you do not do this, you will get runtime errors when testing your plug-in.

Step 2: Creating the plug-in Project


Step 3: Integrating with Eclipse

Before we can start writing our code, we need to determine how we’re going to integrate with Eclipse. That’s because all extensions to Eclipse are done through plug-ins, and plug-ins integrate with each other through extensions on extension points. Eclipse plug-ins typically provide extensions to the platform that support some additional capability or semantics. What is needed is a way for plug-ins to allow other plug-ins to change their behavior in a controlled manner.

Eclipse provides an extensibility mechanism that is scalable, avoids name collisions, doesn’t require compilation of the whole product as a unit, and supports multiple versions of the same component at the same time. Eclipse does this by introducing the notion of a plug-in which encapsulates functional extensions to the Platform. Each plug-in has a name, id, provider name, version, a list of other required plug-ins, and a specification for its runtime. A plug-in can also have any number of extension points that provide a portal into which other plug-ins can add their functionality. This is how Eclipse enables other plug-ins to handle the variability supported by your plug-in. In order to integrate with other plug-ins, a plug-in provides extensions on these extension points (perhaps even its own extension points in order to provide some default behavior).

A plug-in is described in an XML file called the plug-in manifest file. This file is always called plugin.xml, and is always contained in the plug-in sub-directory. The Eclipse Platform reads these manifest files and uses the information to populate and/or update a registry of information that is used to configure the whole platform.

Step 4: Creating the plug-in Manifest File

Now that we know what we’ve got to do, lets tell Eclipse about our plug-in by creating the plug-in manifest file. Use File->New->Other. and select Simple->File to create a file called plugin.xml in the org.eclipse.examples.helloworld project.

Edit the plugin.xml file so that it looks like this:

The plug-in runtime element is how you tell the platform where to find the classes in your plug-in. Essentially, the requires and the runtime elements go together to specify the «classpath» for the plug-in. This approach allows each plug-in to have its own classpath independent of any other plug-in. Further, each plug-in has its own classloader which is used to load all classes defined by that plug-in (i.e., the classes found in its library declarations).

Don’t get confused between an extension-point element and an extension element with a point attribute. The extension-point element defines a hook into the platform while the extension specifies and instance of using the hook. The point attribute is the id of the extension-point you’re extending.

Step 5: Setting up the plug-in Project

Switch to the Java perspective if you’re not already there with Window->Open Perspective->Other and select the Java perspective (or if Java is available on the menu, you may select it directly). Then select the packages explorer tab to view the packages in your project. You should only see the packages you’ve specified in your Java build path so far, probably just the JRE_LIB entry for your rt.jar. Since your going to be using the IWorkbenchWindowActionDelegate interface, and other parts of the platform to develop our example, you need to include the referenced plug-in runtimes in your Java build path.

Now we’re ready to write the code and compile it against workbench.jar and swt.jar. The workbench has the JDK set, the project has all the jar files in its build path we need, and the plug-in manifest file tells us what classes we have to start with.

Step 6: Implementing the IWorkbenchWindowActionDelegate Interface

The code isn’t too complicated, so I won’t cover it in any more detail. Other articles will be addressing the specific Eclipse features we’re using, but we want to focus on plug-ins and the end-to-end integration story rather than the code specifics in this article.

Step 7: Testing your plug-in

We’re ready to test our plug-in! The best way to do this is to use two Eclipse workbenches, one for plug-in development, a second for testing and debug. Let’s call them the development workbench and the testing workbench to avoid confusion. We don’t want to use the same instance the Eclipse workbench for both development and test for a number of reasons:

Prior to launching a testing workbench you must tell Eclipse where the required plugins are located. Edit the Plug-in Development preferences by selecting the Window->Preferences menu item. Expand the Plug-In Development list item. Select Target Platform and click on the Not in Workspace button on the right hand side. You will note the selected items in the list to the left of this button are all now checked. Finally click on the OK button to accept these changes.

Now we can test the Hello World actions. You’ll see the Hello World icon that was specified in the icon attribute of the action element in our plug-in manifest file on the Workbench toolbar (if you don’t provide an icon, it will appear as a gray or red square). Move the cursor over it and you’ll see the hover help you entered. Click and you see the message. Not quite as simple as printf(«Hello World»); but it looks a lot nicer. To turn off the Hello World action set (and remove the associated button), select Window->Customize Perspective. and expand the Other category. Now you can uncheck the Hello World item.

When you turn off the Hello World action set, you’ll see that the icon is removed from the toolbar and you can no longer invoke the plug-in action.

Debugging your plug-in


Conclusion

We’ve seen the complete development of a plug-in extension to Eclipse from design to debug and test. We’ve done all the development, testing, and debugging using Eclipse itself and the Java Development Tooling. The Hello World example doesn’t do much, and the complexity per function is pretty high. But more complex plug-ins follow the same pattern, and Eclipse provides a lot more than we’ve seen with this simple example. You should now have a pretty good idea how all the pieces fit together and what it means to develop and integrate a plug-in. Now its time to do something real. You’ll want to use PDE for that, so look for that article coming soon.

Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.

Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π•Ρ‰Π΅ Ρ€Π°Π· ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Eclipse


Автор: АлСксандр Π¦ΠΈΠΌΠ±Π°Π»
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: RSDN Magazine #1-2008

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ: 17.07.2008
Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ: 15.04.2009
ВСрсия тСкста: 1.0

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² – главная Ρ‡Π°ΡΡ‚ΡŒ создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Eclipse, Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠ»ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство усилий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этот процСсс максимально простым. ЭкспСрты для создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Eclipse (ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (plug-ins) Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… «классичСского» Eclipse ΠΈΠ»ΠΈ Π±Π°Π½Π΄Π»ΠΎΠ² (bundles) Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… OSGi (Open Services Gateway interface)) с «тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния» ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹. Но Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠΌ условии – Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ достаточно Β«ΠΎΠ±Ρ‰ΡƒΡŽΒ» ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ структуры ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Ρ‡Π΅Ρ‚Π»ΠΈΠ²ΠΎΠ΅ прСдставлСниС ΠΎ Π΅Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… возмоТностях. ИмСнно созданиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСдставлСния Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π± ΠΎ Π»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†Π΅Π»ΡŒΡŽ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡŽ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ Π½Π΅ΠΉ Π½Π΅ ставится Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ваТнСйшиС Π΄Π΅Ρ‚Π°Π»ΠΈ – Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚, Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ слишком ΠΌΠ½ΠΎΠ³ΠΎ. Π‘Π΅Π· знания Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠ°ΠΊΡƒΡŽ структуру ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² – Π² «СстСствСнном Π²ΠΈΠ΄Π΅Β» ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ jar-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΎΠ½ΠΈ (ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈΠ»ΠΈ jar-Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ) – ΠΏΠ»Π°Π³ΠΈΠ½ Π½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. Но излишниС Π΄Π΅Ρ‚Π°Π»ΠΈ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стадии знакомства с Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌ, ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ лСс, Π° Π»ΠΈΡΡ‚ΡŒΡΠΌ Π½Π° этих Π΄Π΅Ρ€Π΅Π²ΡŒΡΡ…. Π—Π΄Π΅ΡΡŒ дСлаСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° вСсти Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎ лСсС – это ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Тизнь ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ знакомствС с Π½ΠΎΠ²ΠΎΠΉ ΠΌΠ΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ (Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ срСды Eclipse) Π·Π½Π°ΠΊΠΎΠΌ с Ρ‚Π°ΠΊΠΈΠΌΠΈ понятиями, ΠΊΠ°ΠΊ workspace, прСдставлСниС (view), Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (editor), пСрспСктива (perspective) ΠΈ ΠΏΡ€. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ для программистов Eclipse являСтся ΡΡ‚Π°Ρ‚ΡŒΡ Β«ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ EclipseΒ» (http://www.rsdn.ru/article/devtools/eclipse.xml?print).

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΠΈΡ… располоТСниС

Π˜Ρ‚Π°ΠΊ, ΠΏΠ»Π°Π³ΠΈΠ½ Eclipse.

Как любой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΏΠ»Π°Π³ΠΈΠ½:

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° срСды управлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ самих ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‚ ΠΈΠ· этих Π·Π°Π΄Π°Ρ‡.

Как Π² любой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² Eclipse Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ свойства ΠΈ настройки самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ экзСмпляра Eclipse) ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², созданных для выполнСния ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ (Π² смыслС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ свойств) сущСствуСт Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стадий ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² – Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, тСстирования, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, эксплуатации.

Π’ Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Eclipse (ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для этого экзСмпляра ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹) доступныС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² фиксированном (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° инсталляции) мСстС, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… features ΠΈ plugins. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ jar-Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ‚ΠΎΠΉ ΠΆΠ΅ структурой ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²) ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ доступны Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚.Π΅. всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, выполняСмых ΠΏΠΎΠ΄ Π΄Π°Π½Π½Ρ‹ΠΌ экзСмпляром ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния срСды, ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Ρ‹Ρ… для исполнСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ рСсурсов: Ρ‡Π΅ΠΌ большС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‚Π΅ΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ запускаСтся ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, Ρ‚Π΅ΠΌ большС Π½ΡƒΠΆΠ½ΠΎ памяти для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ являСтся ситуация, ΠΊΠΎΠ³Π΄Π° для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инсталляций Eclipse, Ρ‡Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ свои слоТности (настройка, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚.Π΄.). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ довольно ΠΈΠ·ΠΎΡ‰Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ «скриптового программирования» ΠΌΠΎΠΆΠ½ΠΎ Β«ΠΌΠ΅Π½ΡΡ‚ΡŒ настройки» СдинствСнного экзСмпляра ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (см., Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‡Π΅Π½ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ http://constantiner.blogspot.com/2006/03/eclipse.html, ΠΏΡ€Π°Π²Π΄Π°, ΠΎΠ½Π° ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π½Π΅ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Π½ΠΎ Π·Π°Ρ‚ΠΎ Π² Π½Π΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Β«Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ…ΠΎΠ΄Π°Β» для Π½Π°Ρ‡Π°Π»Π° рассмотрСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ).

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π± ΠΎ льшая Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ… (ΠΈΡ… ΠΊΠΎΠ΄, XML-дСскрипторы, статичСскиС рСсурсы) Β«Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Β» Π½Π° экзСмпляр самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Eclipse.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΈΡ… состояниС – Π² Ρ‚ΠΎΠΌ числС настройки (preferences), привязаны Π½Π΅ ΠΊ установлСнному экзСмпляру ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π° ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌΡƒ workspace (ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /.metadata/.plugins). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ workspaces ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Eclipse прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ «раздСлСния» Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ workspaces.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ

Π”ΠΎ появлСния вСрсии Eclipse 3.1 ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ (рСгистрация, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ°, организация связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΈ ΠΏΡ€.) ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ нСстандартными срСдствами, спСцифичСскими для Eclipse. На смСну этому ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ использованиС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… стандартов, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС – OSGi (Open Services Gateway interface). Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния OSGi ΠΏΠ»Π°Π³ΠΈΠ½ являСтся «сборкой (bundle)Β» этого стандарта. Π‘Π±ΠΎΡ€ΠΊΠ° являСтся основной Β«Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ управлСния».

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ OSGi Π½Π΅ интСрСсуСт прикладная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π²ΠΈΠ΄Π΅ сборки, Ρ‚ΠΎ описаниС сборки Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (Ρ„Π°ΠΉΠ» MANIFEST.MF Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ META-INF). Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ манифСста ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Β«BundleΒ» ΠΈ Β«PackageΒ» говорят сами Π·Π° сСбя – Π² манифСстС ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ свойства сборок OSGi ΠΈ (Π½Π΅ всСгда) ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Π΄Ρ€ΡƒΠ³ΠΈΠΌ сборкам. Bundle-SymbolicName позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя сборки. Name ΠΈ Vendor – простыС тСкстовыС описания.

Π’Π΅Π³ Require-Bundle пСрСчисляСт сборки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π°Π½Π½ΠΎΠΉ сборкой ΠΈ, соотвСтствСнно, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ исполнСнии Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с дСскриптором ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° срСда Eclipse (Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²) опрСдСляСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… сборок, ΠΈ, Ссли нСкоторая сборка Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, Ρ‚ΠΎ возбуТдаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ этом дСлаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ запись Π² ΠΆΡƒΡ€Π½Π°Π» (log), Π° тСкущая сборка Π½Π΅ загруТаСтся. Если отсутствиС сборки ΠΈΠ· списка Require-Bundle Π½Π΅ являСтся Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Ρ‚ΠΎ Ρ‚Π°ΠΊΡƒΡŽ сборку ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ (resolution:=optional). Π‘Ρ€Π΅Π΄Π° Eclipse Π² случаС нСобходимости позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой собствСнный Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’Π°ΠΆΠ½Ρ‹ΠΌ Ρ‚Π΅Π³ΠΎΠΌ являСтся Ρ‚Π΅Π³ Eclipse-LazyStart (Π² Eclipse 3.1 Ρ‚Π΅Π³ назывался Eclipse-AutoStart, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, начиная с Eclipse 3.2, объявлСн ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° самого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π° Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ΅Π½.

О Ρ‚Π΅Π³Π΅ Bundle-Activator Π±ΡƒΠ΄Π΅Ρ‚ сказано Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅.

ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ XML-дСскриптором ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, настройкам ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π΅Π³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ аспСктами Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π­Ρ‚Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация находится Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ дСскрипторС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° – Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ plugin.xml. Π•Π³ΠΎ основноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ использованиС Β«Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΒ» (extension points) Eclipse, ΠΎ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ.

Π Π°Π±ΠΎΡ‚Π° с дСскрипторами ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² начинаСтся ΠΏΡ€ΠΈ стартС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Eclipse. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² просматриваСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ plugins (ΠΈ/ΠΈΠ»ΠΈ links) Π² поисках установлСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ MANIFEST.MF ΠΈ plugin.xml. ΠŸΡ€ΠΈ этом Π² памяти строится структура связСй сборок ΠΈ ΠΈΡ… описаний (рССстр ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²), Π½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π΅ происходит (структура управлСния ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π² памяти нСсоизмСримо мСньшС мСста, Ρ‡Π΅ΠΌ Β«ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉΒ» Π½Π°Π±ΠΎΡ€ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²). Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΈ Π΅Π³ΠΎ активация (забСгая Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΏΠ΅Ρ€Π΅Π΄ – Π²Ρ‹Π·ΠΎΠ² callback-ΠΌΠ΅Ρ‚ΠΎΠ΄Π° start() класса ΠΏΠ»Π°Π³ΠΈΠ½Π°) выполняСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Надо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π²Π°Π»ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния, ΠΈ связано это, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π΅ с самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Eclipse, Π° с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ стандарта OSGi. Π”ΠΎ использования OSGi, Ρ‚.Π΅. Π² Eclipse 2.x, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π² случаС, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄ΠΎ Π΅Π³ΠΎ использования, Ρ‚.Π΅. ΠΏΡ€ΠΈ стартС самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйс org.eclipse.ui.IStartup. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ – всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ настройки Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ‚Π΅Π³Π° Eclipse-LazyStart (ΠΈΠ»ΠΈ Ρ‚Π΅Π³Π° Bundle-ActivationPolicy OSGi). ΠŸΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Eclipse-LazyStart ΠΈ Bundle-ActivationPolicy Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Eclipse 3.3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с возмоТностями Ρ‚Π΅Π³Π° Eclipse-LazyStart.

Класс плагина и Сго использованиС

Класс ΠΏΠ»Π°Π³ΠΈΠ½Π° (ΠΎΠ½ ΠΆΠ΅ класс-Π°ΠΊΡ‚ΠΈΠ²Π°Ρ‚ΠΎΡ€ ΠΏΠ»Π°Π³ΠΈΠ½Π°) – это класс, экзСмпляр ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаСтся срСдой ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π°. Π­Ρ‚ΠΎΡ‚ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйс org.osgi.framework.BundleActivator:

Π‘Ρ€Π΅Π΄Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ start() этого интСрфСйса сразу послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ stop() нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. ПолноС имя класса ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ указываСтся Π² манифСстС (MANIFEST.MF), Π² Ρ‚Π΅Π³Π΅ Bundle-Activator.

Класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ этот интСрфСйс, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Ρ‚.Π΅. Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для создания экзСмпляра этого класса (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getInstance()).

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ класс ΠΏΠ»Π°Π³ΠΈΠ½Π° (Ρ‚ΠΎΡ‡Π½Π΅Π΅, сам ΠΏΠ»Π°Π³ΠΈΠ½ – Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ класс Π΅Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ‚ΠΎΡ€Π°) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΈ Π΄Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, поэтому ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Eclipse ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π² Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹ΠΉ интСрфСйс. Β«ΠšΠΎΡ€Π½Π΅ΠΌΒ» этой ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ являСтся класс org.eclipse.core.runtime.Plugin, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° основС этого класса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ создаСт класс ΠΏΠ»Π°Π³ΠΈΠ½Π° (Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ это касаСтся ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ графичСского прСдставлСния):

Помимо конструктора ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΆΠΈΠ·Π½ΠΈ, класс Plugin содСрТит нСсколько ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

Если ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ собираСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ с графичСским интСфСйсом, Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс – AbstractUIPlugin:

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ этого класса ΠΎΡ‚ класса Plugin являСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ ΠΈ рССстров, Π² Ρ‚ΠΎΠΉ числС для графичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ автоматичСскоС сохранСниС настроСк ΠΏΠ»Π°Π³ΠΈΠ½Π΅ ΠΏΡ€ΠΈ Π΅Π΅ остановкС.

Π—Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ экзСмпляр ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Eclipse выполняСтся ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Java (JVM). Π§Ρ‚ΠΎ касаСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ свой Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ классов (classLoader). Π’Π°ΠΊΠΎΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ для использования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Β«Π²Π½Π΅ΡˆΠ½ΠΈΡ…Β» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ рСсурсам ΠΏΠ»Π°Π³ΠΈΠ½Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, log4j), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ называСтся Β«buddy loadingΒ», ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ задания ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π³ΠΎΠ² манифСста ΠΏΠ»Π°Π³ΠΈΠ½Π° – Eclipse-BuddyPolicy ΠΈ Eclipse-RegisterBuddy (Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ начиная с Eclipse 3.3).

Класс ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Eclipse

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя срСда, Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΠ»Π°Π³ΠΈΠ½Π° часто Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… настройки ΠΈ исполнСния самой срСды. Π’Π°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ список установлСнных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ установкС, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ Π·Π°Π΄Π°Π½ΠΈΠΉ (job manager, задания – ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Eclipse, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ, ΠΏΠΎ сути, высокоуровнСвыми Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Java), связях ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Для этого су щСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс, содСрТащий большоС количСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… сСрвисных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ – org.eclipse.core.runtime.Platform. Как ΠΈ слСдовало ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ поля этого класса ΡΠ²Π»ΡΡŽΡ‚ΡΡ статичСскими.

ДСскриптор plugin.xml ΠΏΠ»Π°Π³ΠΈΠ½Π°

Π’Ρ‚ΠΎΡ€ΠΎΠΉ основной дСскриптор ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (наряду с манифСстом) – xml-дСскриптор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ plugin.xml. Π­Ρ‚ΠΎΡ‚ дСскрптор Ρ‚Π°ΠΊΠΆΠ΅ анализируСтся Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Eclipse Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠ΄ ΠΏΠ»Π°Π³ΠΈΠ½Π°. Основная Π·Π°Π΄Π°Ρ‡Π° этого дСскриптора – ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ связи ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Β«Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΒ». Π’ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π½ΠΈΠΆΠ΅, здСсь ΠΆΠ΅ ΠΏΠΎΠΊΠ° Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: использованиС Π΄Π°Π½Π½Ρ‹Ρ… дСскрипторов Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π° (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсов) ΠΏΠ»Π°Π³ΠΈΠ½Π°. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ эту ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ явно «статичСскиС» связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, Π½ΠΎ ΠΈ информация, которая Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π° Π½Π΅ ΠΈΡ… дСскрипторов).

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ довольно Ρ€Π΅Π΄ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с дСскрипторами ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Β«Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽΒ» – PDE содСрТит графичСскиС экспСрты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ошибок.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ структуры ΠΈ назначСния дСскриптора plugin.xml появится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС знакомства с основами Β«Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΒ» Eclipse.

Π’ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (extension points)

Π’Π΅ΠΌΠ° Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ – ΠΊΠ»ΡŽΡ‡Π΅Π²Π°Ρ для создания Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Eclipse. ИспользованиС ΠΈΠ»ΠΈ созданиС Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, с ΠΎΠ΄Π½ΠΎΠΉ стороны, простая Π·Π°Π΄Π°Ρ‡Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ‚ΠΊΠΎ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, созданиС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° для Β«ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы – нСпростая Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΈ использовании ΠΊΠ°ΠΊΠΎΠΉ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

Π Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΡ‚Ρ‡Π΅Ρ‚Π»ΠΈΠ²ΠΎ дСлится Π½Π° Π΄Π²Π΅ подобласти: использованиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ созданиС собствСнных. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ с тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π½Π΅ прСдставляСт особых слоТностСй. Вторая Π·Π°Π΄Π°Ρ‡Π° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС.

Для понимания ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с ΠΎΠ±Π·ΠΎΡ€Π° Ρ‚Π΅Ρ… Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ создании собствСнной Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ созданию Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ (хотя ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ программисты Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ‡Π΅ΠΌ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈΡ…). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ простого использования Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ излоТСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Бмысл ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ состоит Π² возмоТности динамичСского ΠΈ слабосвязанного Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Eclipse. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, это довольно ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° стандартныС возмоТности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования – Π² смыслС ΠΊΠ°ΠΊ наслСдования классов, Ρ‚Π°ΠΊ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйсов.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, прСдставлСния Eclipse (связанныС с пСрспСктивой, Π½ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ Π²Π°ΠΆΠ½ΠΎ Π½Π° этом этапС). Π•ΡΡ‚ΡŒ, условно говоря, «список прСдставлСний», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ этими прСдставлСниями управляСт, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π²ΠΏΠΎΠ»Π½Π΅ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ. Π­Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Java ΠΈΠ»ΠΈ C++ (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π΅ связаны с Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ прСдставлСниСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ это Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π΅ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ). ΠŸΡ€ΠΈ этом Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прСдставлСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Β«Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²Β», хотя ΠΈ сводимых ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ Ρ‚ΠΈΠΏΡƒ «прСдставлСниС».

ΠΠ°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ стандартный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Β«Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс прСдставлСния» со стандартной Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ программисту ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ классы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (это Π΄Π΅Π»Π°ΡŽΡ‚ сами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки программирования), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс для управлСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ экзСмпляров абстрактных «прСдставлСний» (Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ – ссылок Π½Π° экзСмпляры Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… классов, нСпосрСдствСнно ΠΈΠ»ΠΈ опосрСдованно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΡ‚ Β«Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎΒ» прСдставлСния). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ псСвдо-ΠΊΠΎΠ΄ для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ:

ВсС прСвосходно, Π½ΠΎ Ссли Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Eclipse.

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠŸΡ€ΠΈ создании Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ наличия Π² ΠΊΠΎΠ΄Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π° «фиксации» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠ°ΡΠ°ΡŽΡ‰Π΅ΠΉΡΡ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. Π­Ρ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ Β«Π·Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒΒ» Π² ΠΊΠΎΠ΄, Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² дСскрипторы ΠΏΠ»Π°Π³ΠΈΠ½Π°(ΠΎΠ²), Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ продумывания структуры создаваСмой Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ XML-дСскриптора ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ структуру, Π° для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ с Π½ΠΈΠΌ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ экспСрты срСды, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ схСму этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ОписаниС Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ содСрТит ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ элСмСнтов ΠΈ ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². Бостав ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов опрСдСляСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ создаваСмой Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π½ΡƒΠΆΠ½ΠΎ всСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ этого Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, созданных Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ использованию Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ссылок ΠΈ/ΠΈΠ»ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° listener’ΠΎΠ². Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ listener’ΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ JavaBeans, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с этим шаблоном ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Eclipse, Ρ‚.Π΅. для ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ классов, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ создания экзСмпляров с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° Class.forName(). Для создания экзСмпляра классов (ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΠ»Π°Π³ΠΈΠ½Π°) Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ – IConfigurationElement.createExecutable() ΠΈΠ»ΠΈ IConfigurationElement.createExecutableExtension(). Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π’-Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹Ρ…, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ потокобСзопасности ΠΊΠΎΠ΄Π°, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π² этом Π½Π΅Ρ‚ нСобходимости (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с SWT обращСния ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ (Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ сущностям) Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всСгда ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° – UI-ΠΏΠΎΡ‚ΠΎΠΊΠ°).

Π’-пятых, Π½ΡƒΠΆΠ½ΠΎ всСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, особСнно с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² выполняСтся ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ срСды Eclipse. Для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², связанных с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс org.eclipse.core.runtime.ISafeRunnable:

Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° run() Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого интСрфСйса часто выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π°

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ выполняСтся ΠΊΠΎΠ΄ callback-ΠΌΠ΅Ρ‚ΠΎΠ΄Π° handleException().

ИспользованиС Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

ДСйствия ΠΏΡ€ΠΈ использовании ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π΄ΠΈΠΊΡ‚ΡƒΡŽΡ‚ΡΡ особСнностями структуры этой Ρ‚ΠΎΡ‡ΠΊΠΈ. ОписаниС Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ спроСктированной ΠΈ созданной Ρ‚ΠΎΡ‡ΠΊΠΈ содСрТит (Π² Ρ‚Π΅Π³Π΅ description) описаниС ΠΏΡ€Π°Π²ΠΈΠ» Π΅Π΅ использования. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΅ΡΡ‚ΡŒ дСйствия, ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈ использовании всСх Ρ‚ΠΎΡ‡Π΅ΠΊ.

Плагин, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΡ‡ΠΊΡƒ (ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ) Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² срСдС, прСдоставив ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ срСдС Eclipse (Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΡƒ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²) всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Какая ΠΈΠΌΠ΅Π½Π½ΠΎ информация являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ (ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° самого создаваСмого Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ), опрСдСляСтся создатСлСм Ρ‚ΠΎΡ‡ΠΊΠΈ.

По сути, созданиС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ callback-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅ΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Β«Π²Π΅Π΄ΡƒΡ‚ сСбя» ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ знакомство с ΠΈΡ… использованиСм с рассмотрСниСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стандартных Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Eclipse – Ρ‚Π΅ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ программистами.

НСкоторыС стандартныС Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

ΠžΠ±Ρ‰ΠΈΠΉ список стандартных Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Eclipse ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. МоТно ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ встроСнной справочной систСмС (Help->Help Contents->Platform Plug-in Developer Guide->Reference->Extension Point Reference. Π”Ρ€ΡƒΠ³ΠΎΠΉ способ получСния Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΡƒΠΆΠ΅ Π½Π° стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°, – использованиС экспСрта созданиС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ° extensions экспСрта, ΠΊΠ½ΠΎΠΏΠΊΠ° Add. ).

Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Π² eclipse
Рисунок 1. Π’Ρ‹Π±ΠΎΡ€ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

К соТалСнию (ΠΈΠ»ΠΈ ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ?), стандартных Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅. НиТС ΠΌΡ‹ рассмотрим, Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Eclipse Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ Π½Π° нСсколько Π³Ρ€ΡƒΠΏΠΏ. НаиболСС Π²Π°ΠΆΠ½ΠΎΠΉ (Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²) ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Workbench – ΠΈΡ… (Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ…) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с org.eclipse.ui. ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ всСго с «дСйствий» (Actions).

ДСйствия (Actions)

ДСйствия Eclipse тСсно связаны с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ доступа ΠΊ этим дСйствиям, Π½ΠΎ ΠΈΡ… Π½Π΅ слСдуСт ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ. Action – ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, Π½Π΅ тоТдСствСнная ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ мСню ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов. Одно ΠΈ Ρ‚ΠΎΠΆΠ΅ дСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдСлано доступным Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами.

ДСйствиС Eclipse рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов ΠΈ интСрфСйсов. Π‘Π΄Π΅Π»Π°Π½ΠΎ это вслСдствиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° явно дСлится Π½Π° Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ («интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ») ΠΈ Β«Π½Π΅ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡƒΡŽΒ» Ρ‡Π°ΡΡ‚ΡŒ. Π’Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ интСрфСйса (Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ дСскриптора ΠΏΠ»Π°Π³ΠΈΠ½Π°) ΠΈ собствСнно ΠΊΠΎΠ΄Π° позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ «срСдства доступа» ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ (мСню, ΠΊΠ½ΠΎΠΏΠΊΠΈ) Π±Π΅Π· нСобходимости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΏΠ»Π°Π³ΠΈΠ½Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π° основС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² дСскрипторС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ дСйствий.

Основой дСйствия (ΠΊΠ°ΠΊ элСмСнта Eclipse) являСтся интСрфСйс org.eclipse.jface.action.IAction ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ абстрактный класс Action.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΆΠ΅, создавая ΠΏΠ»Π°Π³ΠΈΠ½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрфСйс (Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… интСрфСйсов), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Β«ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽΒ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΈΠ· этих клиСнтских интСрфСйсов являСтся интСрфСйс org.eclipse.ui.IActionDelegate:

ΠœΠ΅Ρ‚ΠΎΠ΄ run() Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ выполняСмый ΠΊΠΎΠ΄ для дСйствия. Он вызываСтся ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню (Ссли дСйствиС доступно). ΠœΠ΅Ρ‚ΠΎΠ΄ selectionChanged() сигнализируСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² срСдС Eclipse ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ВмСсто нСпосрСдствСнной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого интСрфСйса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса) абстрактный класс org.eclipse.ui.actions.ActionDelegate.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΡ€ΠΈ создании Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ IActionDelegate, Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ интСрфСйсы: IWorkbenchWindowActionDelegate (ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³Π»Π°Π²Π½Ρ‹ΠΌ мСню ΠΈ панСлью ΠΊΠ½ΠΎΠΏΠΎΠΊ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСды (workbench)), IObjectActionDelegate (ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с контСкстным мСню), IViewActionDelegate (ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с прСдставлСниями, view) ΠΈ IEditorActionDelegate (ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, editor). Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ интСрфСйсы ΠΏΠΎΠ»Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ спСцифику выполнСния дСйствий Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ контСкстС.

ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ Π·Π°Π΄Π°Ρ‡Π° программиста – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих интСрфСйсов, ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² дСскрипторС ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΈ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ эту Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ/ΠΈΠ»ΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌΠΈ мСню. ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСйствия Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° срСды Eclipse (Ρ‚.Π΅. с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ IWorkbenchActionDelegation)

ДСйствиС Eclipse задаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ довольно большого Π½Π°Π±ΠΎΡ€Π° свойств (элСмСнтов ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… структуры Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ). Для Π΅Π³ΠΎ задания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Π³ :

Бмысл Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² понятСн: class Π·Π°Π΄Π°Π΅Ρ‚ имя класса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйс IWorkbenchActionDelegate, icon – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, id – ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ дСйствия (ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½ для связи с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ IAction), label – надпись, сопоставлСнная с элСмСнтом доступа ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ (элСмСнт мСню ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов), tooltip – тСкстовая подсказка. Атрибуты menubarPath ΠΈ toolbarPath ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ мСсто Π² мСню ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, Π³Π΄Π΅ появится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт управлСния. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ мСню ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.

РСализация интСрфСйса IWorkbenchActionDelegate ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг – привязка Π΄Π°Π½Π½ΠΎΠ³ΠΎ дСйствия ΠΊ элСмСнту мСню. Бвязка Β«action – menuΒ» являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚Π΅Π³Π° :

Π—Π΄Π΅ΡΡŒ Π½Π΅ мСсто ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ особСнности свойств мСню – смысл ясСн ΠΈ Ρ‚Π°ΠΊ.

Ну, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, привязка actionSet’Π° ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Π­Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ сСйчас ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, называСтся org.eclipse.ui.actionSets:

Π’ΠΎΡ‚ ΠΈ всС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для стандартной Ρ‚ΠΎΡ‡ΠΊΠΈ org.eclipse.ui.actionSets. ЭкспСрты PDE ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Β«Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽΒ» с дСскриптором ΠΏΠ»Π°Π³ΠΈΠ½Π° – Ρ„Π°ΠΉΠ»ΠΎΠΌ plugin.xml.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с контСкстным мСню ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ задСйствована другая Ρ‚ΠΎΡ‡ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрфСйс – Π½Π΅ IWorkbecnchActionDelegate, Π° IObjectActionDelegate:

НаличиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setActivePart() позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ (ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ) ссылку Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π² настоящСС врСмя прСдставлСниС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (Part – ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Eclipse для обозначСния Β«ΠΎΠΊΠΎΠ½Β» Π² составС пСрспСктивы). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, рСализация этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² классС для Π΄Π°Π½Π½ΠΎΠ³ΠΎ дСйствия ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ эту Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ дСйствия с элСмСнтом контСкстного мСню ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ org.eclipse.ui.popupMenus:

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ popupMenus Π½Π΅Ρ‚ смысла Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, Π·Π°Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ контСкстноС мСню ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π΅ всСгда, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условиях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, числа Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… элСмСнтов ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, контСкстноС мСню часто создаСтся Π½Π΅ «статичСски» (Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСски), Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ дСскриптора ΠΏΠ»Π°Π³ΠΈΠ½Π° – это ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ вСсьма ΠΈΠ·ΠΎΡ‰Ρ€Π΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ с использованиСм XML – Π½ΠΎ ΠΈ «динамичСски» (ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹).

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ отобраТСния контСкстного мСню Π²Π»ΠΈΡΡŽΡ‚ Π΄Π²Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°:

К Ρ‚Π΅ΠΌΠ΅ дСйствий относятся Ρ‚Π°ΠΊΠΆΠ΅ рСализация Ρ‚ΠΎΡ‡eΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (связанных с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Actions) ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для прСдставлСний ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Eclipse. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ случаС состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эти ΠΏΠ°Π½Π΅Π»ΠΈ интСрфСйса ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ, наряду с контСкстным мСню, Π΅Ρ‰Π΅ ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов, ΠΈ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ (pull-down) мСню. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пСрспСктиву Java Browsing ΠΈ посмотритС Π½Π° прСдставлСниС Members.

Для вСрсии 3.3 ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² дСскрипторС plugin.xml (Π² jar-Ρ„Π°ΠΉΠ»Π΅ для org.eclipse.jdt.ui, Π² ΠΌΠΎΠ΅ΠΉ вСрсии Eclipse это Ρ„Π°ΠΉΠ» org.eclipse.jdt.ui_3.3.1. r331_v20070906.jar). Π’ этом Ρ„Π°ΠΉΠ»Π΅ информация ΠΎΠ± ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… стандартных элСмСнтов интСрфСйса прСдставлСна Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ мСню для прСдставлСний. Π“Π»Π°Π²Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ viewActions являСтся рСализация интСрфСйса org.eclipse.ui.IViewActionDelegate:

ΠœΠ΅Ρ‚ΠΎΠ΄ init() ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сохранСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π΅ΠΌΡƒ значСния Β«Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎΒ» прСдставлСния:

Для задания ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов прСдставлСния ΠΈ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ элСмСнты ΠΈ – ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ это дСлалось для Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ actionSets.

ΠŸΡ€ΠΈ создании Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π° Π½Π΅ прСдставлСния, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс IEditorActionDelegate:

Класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ этот интСрфСйс, ΠΏΠΎΡ…ΠΎΠΆ Π½Π° класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс IObjectActionDelegation.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрспСктив ΠΈ прСдставлСний

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Β«ΡƒΠΊΡ€ΡƒΠΏΠ½Π΅Π½Π½Ρ‹Ρ…Β» элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ прСдставлСния – Π·Π°Π΄Π°Ρ‡Π° нСслоТная. Π‘Π»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ являСтся Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этих ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ Π² стилС, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΌ Π½Π΅ для тСстов, Π° для Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

Для создания пСрспСктив прСдусмотрСна Ρ‚ΠΎΡ‡ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ org.eclipse.ui.perspectives. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΅Π΅ описания Π² plugin.xml ΠΎΡ‡Π΅Π½ΡŒ проста:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с довольно ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ситуациСй, ΠΊΠΎΠ³Π΄Π° класс Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π² дСскрипторС ΠΏΠ»Π°Π³ΠΈΠ½Π°, являСтся Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π°, ΠΏΠΎ сути, Ρ„Π°Π±Ρ€ΠΈΠΊΠΎΠΉ Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Класс MyPerspectiveFactory Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйс org.eclipse.ui.IPerspectiveFactory:

ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Π° Eclipse, ΠΏΠΎ сути, прСдставляСт собой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для Β«Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ…Β» элСмСнтов интСрфСйса – прСдставлСний, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΏΠ°Π½Π΅Π»Π΅ΠΉ, мСню. Π•Π΅ Π·Π°Π΄Π°Ρ‡Π° (с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния создания Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния) – Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ (Layout) для управлСния располоТСниСм ΠΏΠ°Π½Π΅Π»Π΅ΠΉ, Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС элСмСнтов управлСния ΠΈ Ρ‚.Π΄. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ пСрспСктива создана ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ, созданный экзСмпляр Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ пСрспСктив большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

Для задания Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния пСрспСктивы программист Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ createInitialLayout(). Eclipse Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя экспСрт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Β«Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽΒ» пСрспСктиву ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† для создания пСрспСктивы собствСнной. Код ΠΌΠ΅Ρ‚ΠΎΠ΄Π° createInitialLayout() для ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ стандартных прСдставлСний ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Если Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ пСрспСктиву Π·Π°Π½ΠΎΠ²ΠΎ, Π° «статичСски», Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ дСскрипторов ΠΏΠ»Π°Π³ΠΈΠ½Π°, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ org.eclipse.ui.perspectiveExtensions. По сути, созданиС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для этой Ρ‚ΠΎΡ‡ΠΊΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ пСрспСктивы Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π·Π°Π΄Π°Π½ΠΈΠΉ XML-описаний.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прСдставлСния, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСтся Π² Π²ΠΈΠ΄Π΅ написания ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π½Π° Π±Π°Π·Π΅ стандартного класса org.eclipse.ui.part.ViewPart (программист ΠΌΠΎΠΆΠ΅Ρ‚ просто Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс org.eclipse.ui.IViewPart, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΎΡ‰Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ класс).

Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Π² eclipse
Рисунок 2.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΊΠ°ΠΊ ΠΏΠ°ΠΏΠΊΠΈ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ катСгориями. На Π΄Π°Π½Π½ΠΎΠΌ рисункС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ содСрТат Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСдставлСния, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, хотя Ρ‚ΠΎΡ‡ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° parentCategory).

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ находятся Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΈ привязка прСдставлСния ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ выполняСтся Π·Π° счСт задания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²:

Π§Ρ‚ΠΎ касаСтся ΠΊΠΎΠ΄Π° создаваСмого класса, Ρ‚ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ экспСрт Eclipse. Для красивого отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² прСдставлСниях Π½ΡƒΠΆΠ½ΠΎ довольно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с использованиСм SWT (ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²), Π° Ρ‚Π°ΠΊΠΆΠ΅ с ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ срСдствами JFace.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ

Π—Π΄Π΅ΡΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны (Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ – упомянуты) Ρ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

Π’ΠΎΡ‡ΠΊΠ° для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.


Π’ΠΎΡ‡ΠΊΠΈ для создания ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ привязки ΠΈΡ… дСйствиям

Π’ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях Eclipse ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ аксСлСраторы Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² дСйствий Π±Ρ‹Π»ΠΈ Ρ‡Π°ΡΡ‚ΡŒΡŽ описания дСйствий. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, дСйствия – ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, привязка ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊ дСйствиям – ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ срСдств настройки.

Π’ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ – org.eclipse.ui.commands (Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠΎ катСгориям – ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ это сдСлано с прСдставлСниями) ΠΈ org.eclipse.ui.bindings (Π·Π°Π΄Π°Π½ΠΈΠ΅ сочСтаний клавиш ΠΈ привязка ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΠΎ Π΅Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ). ДСйствиС (action) сопоставляСтся с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ (ΠΏΠΎ Π΅Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ definitionId дСйствия.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ПониманиС возмоТностСй стандартных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Eclipse, Ρ‚.Π΅. Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, вмСстС с ΡƒΠΌΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ программистам ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΏΠΎ созданию Π»ΡŽΠ±Ρ‹Ρ… графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм языка Java.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *