Skip to content

Commit c836b16

Browse files
Anastasia Smirnovajuhopiirainen
authored andcommitted
Making possible setting ConnectorResource resources as icons (#104)
* Making possible setting ConnectorResource resources as icons Fixes #17 * Update example * Instantiate VerticalLayout inside init method
1 parent 0fac483 commit c836b16

4 files changed

Lines changed: 20 additions & 6 deletions

File tree

vaadin-context-menu-addon/src/main/java/com/vaadin/contextmenu/ContextMenu.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.vaadin.event.ContextClickEvent.ContextClickListener;
2626
import com.vaadin.event.ContextClickEvent.ContextClickNotifier;
2727
import com.vaadin.server.AbstractExtension;
28+
import com.vaadin.server.ConnectorResource;
2829
import com.vaadin.server.Extension;
2930
import com.vaadin.server.Resource;
3031
import com.vaadin.server.ResourceReference;
@@ -170,8 +171,12 @@ private List<ContextMenuItemState> convertItemsToState(List<MenuItem> items,
170171
.getDescriptionContentMode();
171172
menuItemState.enabled = item.isEnabled();
172173
menuItemState.separator = item.isSeparator();
173-
menuItemState.icon = ResourceReference.create(item.getIcon(), this,
174-
"");
174+
String key="icon";
175+
ResourceReference resourceReference = ResourceReference.create(item.getIcon(), this, key);
176+
if (item.getIcon()!=null && (item.getIcon() instanceof ConnectorResource)) {
177+
super.getState().resources.put(key,resourceReference);
178+
}
179+
menuItemState.icon = resourceReference;
175180
menuItemState.styleName = item.getStyleName();
176181

177182
menuItemState.childItems = convertItemsToState(item.getChildren(),

vaadin-context-menu-demo/src/main/java/com/vaadin/contextmenu/ContextMenuUI.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.vaadin.server.BrowserWindowOpener;
1111
import com.vaadin.server.VaadinRequest;
1212
import com.vaadin.server.VaadinServlet;
13+
import com.vaadin.server.ClassResource;
14+
import com.vaadin.server.ThemeResource;
1315
import com.vaadin.ui.Button;
1416
import com.vaadin.ui.MenuBar.MenuItem;
1517
import com.vaadin.ui.Notification;
@@ -69,7 +71,9 @@ private void addTree(VerticalLayout layout) {
6971
TreeContextMenu<String> treeContextMenu = new TreeContextMenu<>(tree);
7072
treeContextMenu.addTreeContextMenuListener(e -> {
7173
treeContextMenu.removeItems();
72-
treeContextMenu.addItem("Who?", menuItem -> Notification.show(e.getItem()));
74+
//The path is /resources/images/kitten.jpg
75+
ClassResource ico = new ClassResource("/images/kitten.jpg");
76+
treeContextMenu.addItem("Who?",ico, menuItem -> Notification.show(e.getItem()));
7377
});
7478

7579
layout.addComponent(tree);
@@ -95,19 +99,24 @@ private void fillMenu(ContextMenu menu) {
9599

96100
menu.addSeparator();
97101

98-
MenuItem item4 = menu.addItem("Icon + Description + <b>HTML</b>",
102+
//The path is /resources/images/kitten.jpg
103+
ClassResource ico = new ClassResource("/images/kitten.jpg");
104+
MenuItem item4 = menu.addItem("Icon + Description + <b>HTML</b>",ico,
99105
e -> Notification.show("icon")
100106
);
101-
item4.setIcon(VaadinIcons.ADJUST);
102107
item4.setDescription("Test tooltip");
103108
but3.addClickListener(e -> item4.setDescription(""));
104109
MenuItem item5 = menu.addItem("Custom stylename",
105110
e -> Notification.show("stylename")
106111
);
112+
//The path is /webapp/VAADIN/themes/contextmenu/images
113+
ThemeResource resource = new ThemeResource("images/cat.jpg");
114+
item5.setIcon(resource);
115+
107116
item5.setStyleName("teststyle");
108117

109118
MenuItem item6 = menu.addItem("Submenu");
110-
item6.addItem("Subitem", e -> Notification.show("SubItem"));
119+
item6.addItem("Subitem", VaadinIcons.OPTION, e -> Notification.show("SubItem"));
111120
item6.addSeparator();
112121
item6.addItem("Subitem", e -> Notification.show("SubItem"))
113122
.setDescription("Test");
2.14 MB
Loading
1.05 MB
Loading

0 commit comments

Comments
 (0)