Can you create a resizable control in SWT? - eclipse

I am currently working with the SWT package in Eclipse. Is it possible to create a resizable control within a composite control.
For instance, if I have a tree control which I would like to expand, but in order to view the sub tree items I would like to 'click and drag' the border of the tree to resize it, much like the draggable divider in the Eclipse help website.

I think the SWT Sash is what you are looking for.
Here is a good example on how to use it.
EDIT:
Just found that SashForm is much easier to use. See LINK for a good example.

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.

The API applets can make such a bubble popup

The API applets can make such a bubble popup.
How to make your own, so that its contents could fill any complex layout elements GTK UI XML or HTML and CSS?
It's about something more complicated than a simple vertical menu.
In the documentation I can't find a solution.
The class you want is GtkPopover. It is only available starting with GTK+ 3.12.

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 .

SWT standalone scrollbar widget

Is there a way to create a "standalone" scrollbar in SWT? I would like to have a scrollbar which I have full control over myself and use it to control the contents of another widget in a way which isn't possible with the "built-in" scrollbars in the Table widget, for example.
I agree that you probably can't get a scrollbar alone, but I've worked around that with using a Canvas ( or ScrolledComposite ) and then set the content of that composite to exactly the same size as the ScrolledComposite.getClientArea(). That may require a bit fine tuning and you have to make sure that the content component resizes together with the ScrolledComposite, but should be possible.
You can then get the Scrollbars of the ScrolledComposite and use them independently of the ScrolledComposite.
You can use the SWT Slider widget for this purpose.
SWT Snippet number 17 for code Example: http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet17.java
No, I don't think so. If you look at the jni call for the table, you'll see that it's just a flag into the native call. I'm pretty sure that you can't do what you ask. You could however use Draw2D to get this done fairly quickly. Create a FigueCanvas with eith an XYLayout or a ColumnLayout (I think that's what it's called) and off you go.
There is a better solution!
If you use a ScrolledComposite and use the ScrollBars, the setLocation(int,int) function is called of the internal control to adjust it to the scrollbar position.
If you override this function to really set the location to (0,0), the internal control will not be scrolled anymore.