Vaadin ActionHandler on Panel doesn't work - java

I use Vaadin 6.8.8. I'm trying to add action handler to panel (to get context menu). The panel takes all the place of the window, but I caused the browser context menu when i do mouse right button click.
public class MyPanel extends Panel {
public MyPanel() {
...
addActionHandler(new Action.Handler(){
...
});
setSizeFull();
}
}
What is wrong?

Those action related methods in Panel are for keyboard shorcuts. Only Tree, Table and TreeTable are the core components supporting context menu. To add a context menu to your panel, take a look at the ContextMenu add-on.

Related

How can i disable/remove context menu from combobox?

I have created an editable JComboBox. I want to add specific context menu but default context menu appears when right click.
Is there a way to remove it?
You can set the popup menu of the editor of the combo box by using:
ComboBoxEditor editor = comboBox.getEditor();
JTextField textField = (JTextField)editor.getEditorComponent();
textField.setComponentPopupMenu(...);

Vaadin HybridMenu shift with scrollpanel

I want to add scrollbar to my web app so I can see every components on my browser.
Red rectangle in picture below is Grid. Grid is placed inside class that extends VerticalLayout and implements View.
Green color shows my scrollbar which is added to HybridMenu instance.
HybridMenu root = HybridMenuBuilder.get()
.setContent(new VerticalLayout())
.setMenuComponent(EMenuComponents.LEFT_WITH_TOP)
.setConfig(menuConfig)
.build();
root.addStyleName("scrollpanel");
root.setSizeFull();
super.setContent(root); //class extends UI
scrollpanel definition in css:
.scrollpanel > div {
overflow: auto !important;
}
When I reduce height of browser window, menu bar is also being scrolled:
I tried to set scrollbar to VerticalLayout, but it seems like id didn't capture that grid was partly hidden. (I've setted everything in VerticalLayout to full size - How to add scrollbar to Vaadin layout)
//extends VerticalLayout implements View
private void init()
{
this.addStyleName("scrollpanel");
this.setSizeFull();
this.setMargin(false);
grid.setSizeFull();
this.addComponentsAndExpand(grid);
this.setExpandRatio(grid, 0.7f);
this.setComponentAlignment(grid, Alignment.TOP_LEFT);
}
Generally I found some not expected (at least for me) behaviour of components in VerticalLayout. They acts differently according to Layout root
(Example with VerticalLayout as root).
Questions:
How can I avoid hiding part of hybrid menu when scrolling?
Am I missing something about adding scroll panel to this VerticalLayout?
#Edit:
I found that this problem doesn't occurs if HybridMenu content is not fullSized or content is not set.
On the other hand scrollbars are not available without it.
So, creating HybridMenu the way that code below shows, solves problem with scrollpanels, but restores previous problem (layout type doesn't change anything).
AbsoluteLayout test = new AbsoluteLayout();
test.setSizeFull();
HybridMenu root = HybridMenuBuilder.get()
.setContent(test)
.setMenuComponent(EMenuComponents.LEFT_WITH_TOP)
.setConfig(menuConfig)
.build();

Set Icon to JApplet titlebar

I am using JApplet embedded in HTML. How can I set an icon or logo to the title bar of JApplet, just like we set icons to JFrame using setIconImage?
An applet has no title bar, so that is not possible. You could always try to have the applet set an icon for the web page itself.

Change JPanel at runtime with a button

Hello I have a main layout made in this way:
| |
Main pane |Menu pane|
| |
Now, menu pane is made just of button: clicking on a button switches main panel with another panel.
On click event is made this way:
public void actionPerformed(ActionEvent evt){
mainPanel = new MyNewPanel();
this.revalidate();
}
But, for some reason, main panel does not change!
You are not setting the main component of your container. You need to add your new panel and call validate() on that container.
Note, depending on your the layout of your container you may need to remove the currently visible component first.
CardLayout could manage all this for you.

How do I add a double-click event listener to tray icon using SWT?

I have an SWT tray icon which I've created with the following snippet of code:
itmTrayItem = new TrayItem(trySysTray, SWT.NONE);
itmTrayItem.setToolTipText("My App");
itmTrayItem.addListener(SWT.MenuDetect, new Listener() {
public void handleEvent(Event event) {
mnuPopup.setVisible(true);
}
});
Right clicking on the tray icon brings up a context menu. I'd like to add a double-click event to the tray icon so that when the icon is double-clicked I perform some action. How can I do this?
I haven't understood how I was use the mouse listener as I've been finding some parts of the SWT docs lacking in examples.
Thanks
try the SWT.DefaultSelection event, it may do the trick

Categories

Resources