diff --git a/nuxeo-studio-ui/src/main/java/com/nuxeo/studio/client/features/layout/ui/LayoutWidgetLibraryOptionImpl.java b/nuxeo-studio-ui/src/main/java/com/nuxeo/studio/client/features/layout/ui/LayoutWidgetLibraryOptionImpl.java index 130c815..4f8abeb 100644 --- a/nuxeo-studio-ui/src/main/java/com/nuxeo/studio/client/features/layout/ui/LayoutWidgetLibraryOptionImpl.java +++ b/nuxeo-studio-ui/src/main/java/com/nuxeo/studio/client/features/layout/ui/LayoutWidgetLibraryOptionImpl.java @@ -10,12 +10,18 @@ package com.nuxeo.studio.client.features.layout.ui; import com.allen_sauer.gwt.dnd.client.PickupDragController; import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.nuxeo.gwt.ui.client.HTMLUtils; +import com.nuxeo.studio.client.IDE; import com.nuxeo.studio.client.StudioIds; import com.nuxeo.studio.client.features.layout.LayoutWidgetModel; +import com.nuxeo.studio.client.features.layout.WidgetTypeDefContribution; import com.nuxeo.studio.client.features.layout.ui.document.DocumentWidgetPalette; +import com.nuxeo.studio.client.help.Hint; +import com.nuxeo.studio.client.model.ProjectTypeRegistry; +import com.nuxeo.studio.client.registries.WidgetTypeDefRegistry; /** * An item that can be dragged into a layout cell. Usually displayed into a @@ -34,6 +40,8 @@ public class LayoutWidgetLibraryOptionImpl extends LayoutWidgetLibraryOption { protected final LayoutWidgetModel widgetModel; + protected SimplePanel panel; + protected Widget draggableWidget; public LayoutWidgetLibraryOptionImpl(LayoutWidgetModel widgetModel, @@ -50,9 +58,10 @@ public class LayoutWidgetLibraryOptionImpl extends LayoutWidgetLibraryOption { } public void initializeCompositeWidget() { - SimplePanel panel = new SimplePanel(); + panel = new SimplePanel(); String label = widgetModel.getStudioDisplayLabel(); - draggableWidget = createWidget(getIcon(), label, widgetModel.getType()); + String type = widgetModel.getType(); + draggableWidget = createWidget(getIcon(), label, type); panel.setWidget(draggableWidget); String title = getTitle(); if (title != null) { @@ -62,7 +71,19 @@ public class LayoutWidgetLibraryOptionImpl extends LayoutWidgetLibraryOption { } panel.getWidget().ensureDebugId( StudioIds.getLayoutWidgetLibraryOption(label)); - initWidget(panel); + + Widget helpPanel = null; + if (addTypeInfo) { + helpPanel = createWidgetHelp(type); + } + if (helpPanel != null) { + HorizontalPanel hpanel = new HorizontalPanel(); + hpanel.add(panel); + hpanel.add(helpPanel); + initWidget(hpanel); + } else { + initWidget(panel); + } } @Override @@ -83,44 +104,38 @@ public class LayoutWidgetLibraryOptionImpl extends LayoutWidgetLibraryOption { label = new HTML(HTMLUtils.getResourceImageWithText(icon, text)); } return label; - // HorizontalPanel hpanel = new HorizontalPanel(); - // hpanel.setStylePrimaryName("studio-widget-palette"); - // hpanel.setSpacing(4); - // hpanel.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE); - // if (!addTypeInfo) { - // hpanel.add(label); - // } else { - // String desc = null; - // if (type != null && type.trim().length() != 0) { - // // add help about the widget type - // ProjectTypeRegistry reg = IDE.getProjectTypeRegistry(); - // WidgetTypeDefRegistry widgetTypeRegistry = - // reg.getBuiltinWidgetTypeRegistry(); - // WidgetTypeDefContribution wt = - // widgetTypeRegistry.getContribution(type); - // if (wt != null && wt.getConfiguration() != null) { - // desc = wt.getConfiguration().getDescription(); - // } - // } - // if (desc == null || desc.trim().length() == 0) { - // hpanel.add(label); - // } else { - // hpanel.add(new Hint(label, null, desc, false, false)); - // } - // } - // return hpanel; + } + + protected Widget createWidgetHelp(String type) { + String desc = null; + if (type != null && type.trim().length() != 0) { + // add help about the widget type + ProjectTypeRegistry reg = IDE.getProjectTypeRegistry(); + WidgetTypeDefRegistry widgetTypeRegistry = reg.getBuiltinWidgetTypeRegistry(); + WidgetTypeDefContribution wt = widgetTypeRegistry.getContribution(type); + if (wt != null && wt.getConfiguration() != null) { + desc = wt.getConfiguration().getDescription(); + } + } + if (desc != null && desc.trim().length() != 0) { + SimplePanel panel = new SimplePanel(); + panel.setStylePrimaryName("studio-widget-palette"); + panel.add(new Hint(null, null, desc, false, false)); + return panel; + } + return null; } @Override public void registerController(PickupDragController controller) { - controller.makeDraggable(this); - getWidget().addStyleName("layout-draggable"); + controller.makeDraggable(panel); + getDragHandle().addStyleName("layout-draggable"); } @Override public void disposeController(PickupDragController controller) { - controller.makeNotDraggable(this); - getWidget().removeStyleName("layout-draggable"); + controller.makeNotDraggable(panel); + getDragHandle().removeStyleName("layout-draggable"); } @Override