Embedding a web application inside Eclipse/IntelliJ - java

I have a couple of questions regarding Eclipse and IntelliJ IDEA support for building a plugin that can...
show (and accept user input to) an interactive web application (with drag-and-drop diagram editing functionalities similar to Visio/OmniGrapffle/Inkscape) inside the main workspace (the biggest space to the right:)) of the IDE.
interaction with the web application (e.g. clicking on a box in the diagram) will trigger some action in the IDE (e.g. show a corresponding source file, or opening a dialog to create a new class).
In other words, I plan to let the web application manage most of the GUI aspects to overcome the limitations of Eclipse and IDEA in terms of animation, or flexibility in terms of showing nice graphics.
To this end, the web application needs to be able to communicate with the services/other plugins provided inside the IDE.
Browsing the web and StackOverflow revealed to me that Eclipse supports an OSGI architecture that might enable me to write an webservice that can be accessed from a web application. But I'm not sure where to start with. Also no relevant information concerning building my plugin for IntelliJ IDEA can be found.
It would be great if you can provide me some pointers. Thank you very much.
PS: I was considering building a normal plugin, (e.g. using the Eclipse's Graphiti project) but the user experience (button's shape, dialogs, properties windows, etd.) using only Eclipse platform support seems limited, as opposed to full HTML/CSS/JavaScript/etc/ supported by a web application. I might be wrong with my approach though so any help would greatly be appreciated.

Related

Is there API of IDEA communicating with JCEF's webview when developing IDEA's plugin?

I am currently preparing for developing an IDEA plugin involving webview containing some information. Since I have developed a VSCode extension of similar functionalities and it uses many webviews, I plan to migrate those HTML to IDEA's plugin by JECF.
However, the functionalities require some interaction with the extension/plugin, as in VSCode I could click some elements of the webview and insert some texts into the editor by acquireVsCodeApi provided by VSCode itself. And I am not quite sure if such communication could be performed by using JCEF in the plugin of IDEA? (I am quite new to Jetbrain's plugin development and JAVA)
Great thanks for any suggestions.
Yes, this is possible. One way to do this is to separate your plugin into three separate modules:
A module containing the IDE-side plugin code.
A module that contains the JCEF browser code.
A module that acts as a message passing interface. This module will enable communication between the first two modules.
See the IntelliJ PDF Viewer plugin for a good example, in particular the kotlinjs-migrate branch. Another good place to start - and to keep an eye on while you figure out how the pdf viewer plugin works - is the IntelliJ documentation page about JCEF. The section about the JBCefClient might especially be of interest to you, though it is rather minimal.

Accessing Eclipse help through an external web browser

I've been working on adding help to eclipse RCP applications. I've understood how to add the required plugins and my custom help content associated with those.
Now, I want to access that same help content through a different browser (i.e. other than eclipse's inbuilt help system).
e.g. The link http://help.eclipse.org/kepler/index.jsp shows the kind of arrangement I need. It provides the same user interface for Eclipse Help Documentation (as in eclipse's inbuilt help system) even when accessed through a different web browser.
I'm new to eclipse and facing some problems in getting it done. I've tried looking into the following Eclipse Help APIs but I'm not sure on how to use these:
1) org.eclipse.help.ui
2) org.eclipse.help.webapp
Can someone please guide me to a proper approach to accomplish this task. I'm presently working on Eclipse Kepler Service Release 2.

Reusing Eclipse Run menu in Eclipse RCP application

I want to create an eclipse RCP application for a custom language. A programs which is written using the cutom language should be run and show it's output when the user click on the Run button.
Is it possible to integrate eclipse Run menu in eclipse RCP application with it's default features as we create NEW menu item by using ActionFactory? If it is possible how to do that?
Thanks in advance.
If you "just" want the Run menu along with the default entries, just include a dependency to org.eclipse.debug.ui.
You will then need to add launch configuration types for your specific language using the various extension point from the plugins org.eclipse.debug.core and org.eclipse.debug.ui.
As always, when it comes to the more advanced functionality of Eclipse, the easiest way to get access to the functionality is via resources and examples. Although it is a bit dated, the article "We Have Lift-off" (http://www.eclipse.org/articles/Article-Launch-Framework/launch.html) is the best starting point for this. Have a look at the various references to org.eclipse.debug.core.launchConfigurationTypes to find the best example to use asa starting point - in particular the ANT Build stuff as this is pretty simple...
In general you can find the plug-in that contributes a specific entry using the PDE Menu Spy (Alt-Shift-F2 on MacOS)...

Netbeans Project Types

I'm building a Java application using NetBeans 7.0. The app is intended for use on Windows, so I guess the tool I'm really making most use of is Java Swing (for the cool, nifty screen elements).
My question relates to NetBeans' process of creating the various project types. The application I'm building is based on the "Java Desktop Application" template (?). My problem is that there seems to be a nice load of bloat built into that, and I can't figure out how to remove most of it without blowing up the app.
As a test, I created a "Java Application"project, but this has the opposite problem -- there's absolutely nothing built into the code, and I can figure out how to add anything. Specifically, a Java Desktop Application project created in NetBeans give me the ability to directly edit the screen layout like in Visual Studio. However, a Java Application does not appear to have this capability, I have no idea how (or even if) this can be addressed.
If I could start with a no-frills Java application, and add some capability to edit its layout and control the function of the screen elements (i.e. make it a windows application, I think), that would be just about perfect.
Does anybody have a suggestion for a minimal, but functional NetBeans application start point??
Thanks,
R.
If you start with a plain Java Application then as you realize you start with a bare bones type application. To add a GUI you can add New>JFRame Form. It adds a class that extends JFrame and Netbeans will recognize that it should open it in the visual editor for you.

Use SWT Browser Widget to Write Desktop Application

I recently played around with the SWT browser widget (which is great). I am wondering if I could write a full desktop application with it (with java services behind - e.g. persistence) and what drawbacks I would have to consider. The advantage would be that people without java knowledge could work on the gui. Of course it depends on the requirements and I know that this is not a very specific question. But mabye someone already tried to build a bigger app this way and is willing to share insights.
Thanks
Marcel
I'm not sure I share your opinion of the SWT browser widget. AFAIK it's merely a shell into the default browser on your machine, merely with a few API access points. I've used it for minor things when I needed to show a web page from within the application. But writing a whole application? That doesn't make sense.
If you want to build a web-based application that runs in the browser against a Java based server framework, there are many AJAXian frameworks to do it. You'd still be doing JavaScript for your client code. And you'd still be dealing with all the complexities of different browsers. I'm not sure why you would want to host it inside an SWT application instead of just directly in the browser window.

Categories

Resources