1 package org.simantics.document.swt.core.widget;
3 import java.util.TreeMap;
5 import org.eclipse.jface.layout.GridDataFactory;
6 import org.eclipse.jface.layout.GridLayoutFactory;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.custom.ScrolledComposite;
9 import org.eclipse.swt.events.ControlEvent;
10 import org.eclipse.swt.events.ControlListener;
11 import org.eclipse.swt.widgets.Composite;
12 import org.eclipse.swt.widgets.Control;
13 import org.eclipse.swt.widgets.Display;
14 import org.simantics.document.server.JSONObject;
15 import org.simantics.document.server.client.WidgetData;
16 import org.simantics.document.swt.core.SWTDocument;
17 import org.simantics.document.swt.core.SWTViews;
18 import org.simantics.document.swt.core.base.HasWidgetsWidgetManager;
19 import org.simantics.document.swt.core.base.ScrolledCompositeContent;
20 import org.simantics.document.swt.core.base.WidgetContainer;
22 public class ScrolledCompositeWidget extends HasWidgetsWidgetManager<ScrolledCompositeContent> {
25 protected void doUpdateProperties(SWTDocument document, ScrolledCompositeContent control, JSONObject object) {
29 protected ScrolledCompositeContent doCreateControl(SWTDocument document, Composite parent, JSONObject object) {
31 ScrolledComposite explorersScroll = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.BORDER);
32 explorersScroll.setBackground(Display.getCurrent().getSystemColor(
34 explorersScroll.setLayout(GridLayoutFactory.fillDefaults()
35 .margins(0, 0).spacing(0, 0).create());
36 GridDataFactory.fillDefaults().grab(true, true).span(1, 1)
37 .applyTo(explorersScroll);
39 ScrolledCompositeContent explorers = new ScrolledCompositeContent(explorersScroll, SWT.NONE);
41 explorersScroll.addControlListener(new ControlListener() {
44 public void controlResized(ControlEvent e) {
45 SWTViews.notifyScrolledComposite(explorers);
49 public void controlMoved(ControlEvent e) {
50 SWTViews.notifyScrolledComposite(explorers);
54 explorers.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
56 // Make sure that exploders are initially visible
57 explorers.setSize(10, 300);
58 explorers.setLayout(GridLayoutFactory.fillDefaults().margins(0, 0).numColumns(1)
59 .spacing(0, 0).create());
61 explorersScroll.setMinSize(100, 100);
62 explorersScroll.setContent(explorers);
69 public void updateChildren(SWTDocument document, JSONObject object, WidgetContainer widget, TreeMap<String, WidgetData> childMap) {
71 super.updateChildren(document, object, widget, childMap);
73 for(WidgetData c : childMap.values()) {
75 WidgetContainer con = (WidgetContainer)c.widget;
76 Control child = con.getControl();
77 GridDataFactory.fillDefaults().grab(true, false).applyTo(child);