Dynamically create Eclipse Perspective with views - eclipse

I can create an Eclipse perspective and add viewparts to it using plugin.xml and the declarative definitions.
However, I need to programatically create a perspective, set its name/title and add two viewparts to it in a split-view (one viewpart on the left and the other on the right).
I have searched the net and read through a lot of documentation but can't figure out how to do this. Does anyone have a small example of this? Maybe knows what to search for?

You should be to create a new perspective via IPerspectiveRegistry.clonePerspective(String id, String label, IPerspectiveDescriptor desc). Here the original perspective, desc, can be null, but I haven't found a way to set the image for the new perspective.
You can add the needed views via IWorkbenchPage.showView(...), but have never figured out how to lay out the new view in the perspective...

Related

WindowBuilder SWT Table

Can you suggest me how to build a Table with Eclipse WindowBuilder Plugin and SWT?
I read the official docs but I found orrible example with fixed column size. I would like to build a Table who fit the parent container (I used composite) when it is resized.
P.S.: Maybe I should use Swing instead?? All valid example I have seen are with JTable..
Can you help me?
Thank you
Thank you for your reply!
I have to do a little GUI application for a friend, I'm not so practice nor with Swing neither with SWT.
Anyway I manage to do a Simple ApplicationWindow with menubar, some submenu item and a composite container under the menu where panel should appear when user clicks on menu item.
Than I manage to build a TableViewer inside that composite component.. but now I would like add another table in the same place (the table represents different thing and should appear or disappear when user click some menu button).
In Swing I see many example of CardLayout but nothing with SWT.
Can you suggest me a simple example of layered layout with SWT?? I have the impression that Swing is much more simple..
Thank you all
On my modest opinion, Swing is well documented than SWT and maybe more simple. I switched to it.
Thank you.

How to link the selections in Nattable shown in a custom editor view to the sirius property view in eclipse?

I have a question regarding the linkage of the selection made on the nattable in a custom editor view and the sirius property view. Any ideas, how should i go for it, it will be really kind of you if you can highlight the steps in an easy to understand manner, because i have researched a lot on it and nothing is concrete enough to get me started to solve this task.
I am attaching two screenshots describing, what is the nature of the issue i am facing and what i want to implement.
Screenshots>
1. https://imgur.com/bVqfGc4
In the first screenshot, when i click on the element in the model explorer , its properties show up in the sirius properties view, and they should as that is how sirius property view works
2. https://imgur.com/DKsFQBi
In the second screenshot, when i click on any element on the nattable in a custom editor view containing my nattable, the sirius property view does not respond to the selection made on the nattable in that custom editor view.
I want to implement a solution where when i click on any element in the nattable, its properties hsow up in the sirius property view.
Your help and guidance in this regard will be highly appreciated. Thanks in advance.
Best Regards,
Abu
You need to implement and register an ISelectionProvider. NatTable provides currently only row based providers like the RowSelectionProvider or the E4SelectionListener.
The corresponding examples can be found here:
https://github.com/eclipse/nebula.widgets.nattable/blob/master/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_500_Layers/_505_Selection/_5054_SelectionProviderExample.java
https://github.com/eclipse/nebula.widgets.nattable/blob/master/org.eclipse.nebula.widgets.nattable.examples.e4/src/org/eclipse/nebula/widgets/nattable/examples/e4/part/SelectionListenerExample.java

How to implement a image list control with SWT?

Does anybody have any idea on how to easily implement a image list(like the windows explorer with medium icons) control with swt? it seems like that it could be done easily with CListCtrl in c++ on windows, but does not seem to be easy with swt? any hints are appreciated!
Up to me, you need to create your own widget (check e.g. http://www.snip2code.com/Snippet/11489/Custom-SWT-List-Box) and add composite items to your custom list.
If vertical-only scrolling is enough, I suggest you rely on a single column TableViewer. This is what I did in a project where I needed a gallery-like window allowing the user to pick a graphical component based on displayed thumbnails.
You just need to implement the proper TableLabelProvider.getColumnImage and return the desired thumbnail corresponding to your list entry.
That gives a pretty decent list-like rendering.
In addition, TableViewer API is very well documented.

Displaying only one panel at once

I'd like to have the effect of one of two panels visible at given time in the same place on the screen. Perhaps I could use the DeckPanel but then in the designer I wouldn't be able to edit the hidden one. Maybe you could recommend a technique?
I've found a solution which works but is not pretty IMHO. Ie. in the code I insert the panel which I want to be visible and remove the panel which I don't want to be visible (from the containing panel).
Just put both panel within another panel and then set their visibility.
Panel mainPanel = new Panel();
Panel subPanel1 = new Panel();
Panel subPanel2 = new Panel();
mainPanel.add(subPanel1);
mainPanel.add(subPanel2);
subPanel1.setVisible(true);
subPanel2.setVisible(false);
And then when you want to see panel 2 you just do this:
subPanel1.setVisible(false);
subPanel2.setVisible(true);
If you want to do this the "right" way, I'd suggest looking into the MVP pattern that GWT team in is suggesting for maintaining large-ish GWT application.
Take a look at possible implementations: mvp4g or gwt-platform. They will take care for you of switching views, as well as maintaining history (the back/forward buttons will work as they should) and many more.
You can go for Tablayoutpanel Need not to maintain your own code .

JavaFX 2 custom popup pane

The JavaFX 2 colour picker has a button that pops up a colour chooser pane like so:
I'd like to do something similar, in that I'd like a custom pane to pop up when the button is clicked on and disappear when something else is clicked (in my case, a few image thumbnails). What would be the best way of achieving this? Should I use a ContextMenu and add a pane to a MenuItem somehow, or is there something else I should look at?
It's kind of difficult to do well with the current JavaFX 2.2 API.
Here are some options.
Use a MenuButton with a graphic set in it's MenuItem
This is the approach taken in Button with popup showed below's executable sample code.
Use a PopupControl
Take a look at how the ColorPicker does this in it's code.
ColorPicker extends PopupControl. You could do this, but not all of the API required to build your own PopupControl is currently public. So, for JavaFX 2.2, you would have to rely on internal com.sun classes which are deprecated and will be replaced by public javafx.scene.control classes in JDK8.
Use a ContextMenu
So, I think your idea to "use a ContextMenu and add a pane to a MenuItem" is probably the best approach for now. You should be able to do this by using a CustomMenuItem or setting a graphic on a normal MenuItem. The ContextMenu has nice relative positioning logic. A ContextMenu can also be triggered by a MenuButton.
Use a Custom Dialog
To do this, display a transparent stage at a location relative to the node.
There is some sample code to get you started which I have temporarily linked here.
The sample code does relative positioning to the sides of the main window, but you could update it to perform positioning relative to the sides of a given node (like the ContextMenu's show method).
Use a Glass Pane
To do this, create a StackPane as your root of your main window. Place your main content pane as the first node in the StackPane and then create a Group as the second node in the stackpane, so that it will layer over the top of the main content. Normally, the top group contains nothing, but when you want to show your popup, place it in the top group and translate it to a location relative to the appropriate node in your main content.
You could look at how the anchor nodes in this demo are used to see how this might be adaptable to your context.
Is there a relevant update for this for JavaFX8?
There is not much difference of relevance for Java 8, in general the options are as outlined in this post based on Java 2.2 functionality. Java 8 does add Dialog and Alert functionality, but those are more targeted at use of dialogs with borders, titles and buttons rather than the kind of functionality desired in the question. Perhaps you might be able to start from the Dialog class and heavily customize it to get something close to what is needed, but you are probably better off starting from a blank stage or PopupControl instead.