Java源码示例:com.vaadin.client.ComponentConnector
示例1
@Override
public void onStateChanged(StateChangeEvent stateChangeEvent) {
super.onStateChanged(stateChangeEvent);
getWidget().setAutocomplete(getState().autocomplete);
if (stateChangeEvent.hasPropertyChanged("capsLockIndicator")) {
ComponentConnector capsLockIndicator = (ComponentConnector) getState().capsLockIndicator;
getWidget().setIndicateCapsLock(capsLockIndicator == null ? null : capsLockIndicator.getWidget());
}
if (stateChangeEvent.hasPropertyChanged("htmlName")) {
getWidget().setHtmlName(getState().htmlName);
}
}
示例2
private void checkForRTE(Widget popupComponentWidget2) {
if (popupComponentWidget2 instanceof VRichTextArea) {
ComponentConnector rtaConnector = Util
.findConnectorFor(popupComponentWidget2);
if (rtaConnector != null) {
rtaConnector.flush();
}
} else if (popupComponentWidget2 instanceof Grid) {
// Grid implements HasWidgets but iterator() throws
// UnsupportedOperationException so don't do anything
// in case of Grid.
} else if (popupComponentWidget2 instanceof HasWidgets) {
HasWidgets hw = (HasWidgets) popupComponentWidget2;
Iterator<Widget> iterator = hw.iterator();
while (iterator.hasNext()) {
checkForRTE(iterator.next());
}
}
}
示例3
protected boolean canBeGrabbedRecursive(Widget root, Widget widget) {
if (widget == root) {
return true;
}
ComponentConnector connector;
if (!isCaptionForAccordion(widget)) {
connector = Util.findConnectorFor(widget);
} else {
connector = findConnectorForAccordionCaption(widget);
}
if (connector != null && state.nonGrabbable.contains(connector)) {
return false;
}
Widget parent = widget.getParent();
if (parent == null || parent == root) {
return true;
}
return canBeGrabbedRecursive(root, parent);
}
示例4
@Override
public void dragOver(VDragEvent drag) {
getLayout().deEmphasis();
getLayout().updateDragDetails(drag);
getLayout().postOverHook(drag);
ComponentConnector widgetConnector = (ComponentConnector) drag
.getTransferable()
.getData(Constants.TRANSFERABLE_DETAIL_COMPONENT);
if (widgetConnector != null
&& getLayout().equals(widgetConnector.getWidget())) {
return;
}
// Validate the drop
validate(new VAcceptCallback() {
public void accepted(VDragEvent event) {
getLayout().emphasis(event.getElementOver());
}
}, drag);
}
示例5
@Override
public void dragOver(VDragEvent drag) {
getLayout().deEmphasis();
getLayout().updateDragDetails(drag);
getLayout().postOverHook(drag);
ComponentConnector widgetConnector = (ComponentConnector) drag
.getTransferable()
.getData(Constants.TRANSFERABLE_DETAIL_COMPONENT);
if (widgetConnector != null
&& getLayout().equals(widgetConnector.getWidget())) {
return;
}
// Validate the drop
validate(new VAcceptCallback() {
public void accepted(VDragEvent event) {
getLayout().emphasis(event.getElementOver());
}
}, drag);
}
示例6
public static HTML5Support enable(final ComponentConnector connector,
final VDDAbstractDropHandler<? extends Widget> handler) {
if (handler == null) {
return null;
}
Widget w = connector.getWidget();
final HTML5Support support = GWT.create(HTML5Support.class);
final HTML5DragHandler dragHandler = new HTML5DragHandler(connector,
handler);
support.handlers
.add(w.addDomHandler(dragHandler, DragEnterEvent.getType()));
support.handlers
.add(w.addDomHandler(dragHandler, DragOverEvent.getType()));
support.handlers.add(w.addDomHandler(dragHandler, DropEvent.getType()));
return support;
}
示例7
@Override
protected void extend(final ServerConnector target) {
textFieldWidget = (VTextField) ((ComponentConnector) target).getWidget();
textFieldWidget.setImmediate(true);
textFieldWidget.textChangeEventMode = "EAGER";
panel.setWidget(select);
panel.setStyleName("suggestion-popup");
panel.setOwner(textFieldWidget);
textFieldWidget.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(final KeyUpEvent event) {
if (panel.isAttached()) {
handlePanelEventDelegation(event);
} else if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
rpc.executeQuery(textFieldWidget.getValue(), textFieldWidget.getCursorPos());
} else {
doAskForSuggestion();
}
}
});
}
示例8
@Override
public void updateCaption(ComponentConnector childConnector) {
super.updateCaption(childConnector);
if (getState().useInlineCaption && initialStateChangePerformed) {
updateCaptionSizes();
updateCaptionAlignments();
// always relayout after caption changes
getLayoutManager().setNeedsLayout(this);
}
}
示例9
@Override
public void onBrowserEvent(Event event) {
if (DOM.eventGetType(event) == Event.ONCLICK) {
Element target = Element.as(event.getEventTarget());
ComponentConnector componentConnector = Util.findConnectorFor(getWidget());
if (target == contextHelpIndicatorElement
&& componentConnector instanceof HasContextHelpConnector) {
HasContextHelpConnector connector = (HasContextHelpConnector) componentConnector;
if (hasContextHelpIconListeners(componentConnector.getState())) {
connector.contextHelpIconClick(event);
}
}
}
}
示例10
@Override
protected ComponentConnectorLayoutSlot createComponentConnectorLayoutSlot(ComponentConnector component) {
CubaFieldGroupLayoutComponentSlot slot =
new CubaFieldGroupLayoutComponentSlot(CubaFieldGroupLayoutWidget.CLASSNAME, component, getConnector());
slot.setCaptionInline(useInlineCaption);
return slot;
}
示例11
@Override
public void onClick(ClickEvent event) {
Element target = Element.as(event.getNativeEvent().getEventTarget());
ComponentConnector componentConnector = Util.findConnectorFor(getWidget());
if (target == contextHelpIcon
&& componentConnector instanceof HasContextHelpConnector) {
HasContextHelpConnector connector = (HasContextHelpConnector) componentConnector;
if (hasContextHelpIconListeners(componentConnector.getState())) {
connector.contextHelpIconClick(event);
}
}
}
示例12
@Override
protected void extend(ServerConnector target) {
VButton button = (VButton) ((ComponentConnector) target).getWidget();
button.addClickHandler(event -> {
if (getState().copyTargetSelector != null) {
boolean success = copyToClipboard(getState().copyTargetSelector.startsWith(".")
? getState().copyTargetSelector
: "." + getState().copyTargetSelector);
getRpcProxy(CubaCopyButtonExtensionServerRpc.class).copied(success);
}
});
}
示例13
@Nonnull
public static List<Widget> remapWidgets(AbstractComponentContainerConnector abstractLayout) {
List<Widget> widgets = new ArrayList<>();
for (ComponentConnector connector : abstractLayout.getChildComponents()) {
widgets.add(connector.getWidget());
}
return widgets;
}
示例14
private ComponentConnector findConnectorFor(Widget widget) {
if (!isCaptionForAccordion(widget)) {
return Util.findConnectorFor(widget);
} else {
return findConnectorForAccordionCaption(widget);
}
}
示例15
/**
* Emphasizes a component container when user is hovering a dragged
* component over the container.
*
* @param cell
* The container
* @param event
*/
protected void emphasis(CellDetails cell, VDragEvent event) {
Style shadowStyle = dragShadow.getElement().getStyle();
shadowStyle.setPosition(Position.ABSOLUTE);
shadowStyle.setWidth(cell.width, Unit.PX);
shadowStyle.setHeight(cell.height, Unit.PX);
shadowStyle.setLeft(cell.x, Unit.PX);
shadowStyle.setTop(cell.y, Unit.PX);
// Remove any existing empasis
deEmphasis();
// Ensure we are not dragging ourself into ourself
ComponentConnector draggedConnector = (ComponentConnector) event
.getTransferable()
.getData(Constants.TRANSFERABLE_DETAIL_COMPONENT);
if (draggedConnector != null
&& draggedConnector.getWidget() == VDDGridLayout.this) {
return;
}
HorizontalDropLocation hl = getHorizontalDropLocation(cell, event);
VerticalDropLocation vl = getVerticalDropLocation(cell, event);
// Apply over style
setStyleName(dragShadow.getElement(), OVER, true);
// Add vertical location dependent style
setStyleName(dragShadow.getElement(),
OVER + "-" + vl.toString().toLowerCase(), true);
// Add horizontal location dependent style
setStyleName(dragShadow.getElement(),
OVER + "-" + hl.toString().toLowerCase(), true);
}
示例16
public Element getDragCaptionElement(Widget w) {
ComponentConnector component = Util.findConnectorFor(w);
DDLayoutState state = ((DragAndDropAwareState) root.getState()).getDragAndDropState();
DragCaptionInfo dci = state.dragCaptions.get(component);
Document document = Document.get();
Element dragCaptionImage = document.createDivElement();
Element dragCaption = document.createSpanElement();
String dragCaptionText = dci.caption;
if (dragCaptionText != null) {
if (dci.contentMode == ContentMode.TEXT) {
dragCaption.setInnerText(dragCaptionText);
} else if (dci.contentMode == ContentMode.HTML) {
dragCaption.setInnerHTML(dragCaptionText);
} else if (dci.contentMode == ContentMode.PREFORMATTED) {
PreElement preElement = document.createPreElement();
preElement.setInnerText(dragCaptionText);
dragCaption.appendChild(preElement);
}
}
String dragIconKey = state.dragCaptions.get(component).iconKey;
if (dragIconKey != null) {
String resourceUrl = root.getResourceUrl(dragIconKey);
Icon icon = component.getConnection().getIcon(resourceUrl);
dragCaptionImage.appendChild(icon.getElement());
}
dragCaptionImage.appendChild(dragCaption);
return dragCaptionImage;
}
示例17
@Override
public Element getDragImageElement(Widget w) {
ComponentConnector component = Util.findConnectorFor(w);
Connector dragImage = state.referenceImageComponents.get(component);
if (dragImage != null) {
return ConnectorMap.get(component.getConnection())
.getElement(dragImage.getConnectorId());
}
return null;
}
示例18
private void updatePlaceHolderStyleProperties(VDragEvent drag) {
int width = 0;
int height = 0;
String className = "";
placeHolderElement.setClassName(DRAG_SHADOW_STYLE_NAME);
ComponentConnector draggedConnector = (ComponentConnector) drag
.getTransferable()
.getData(Constants.TRANSFERABLE_DETAIL_COMPONENT);
if (draggedConnector != null) {
height = Util.getRequiredHeight(draggedConnector.getWidget());
width = Util.getRequiredWidth(draggedConnector.getWidget());
className = draggedConnector.getWidget().getElement()
.getClassName();
className = className.replaceAll(
VLayoutDragDropMouseHandler.ACTIVE_DRAG_SOURCE_STYLENAME,
"");
placeHolderElement.addClassName(className);
} else if (drag.getElementOver() != getElement()) {
width = 3;
height = drag.getElementOver().getOffsetHeight();
}
placeHolderElement.getStyle().setWidth(width, Unit.PX);
placeHolderElement.getStyle().setHeight(height, Unit.PX);
}
示例19
private boolean validate(NativeEvent event) {
if (!Element.is(event.getEventTarget())) {
return false;
}
Element target = Element.as(event.getEventTarget());
Widget widget = Util.findWidget(target, null);
if (widget == null) {
return false;
}
ComponentConnector connector = Util.findConnectorFor(widget);
while (connector == null && widget != null) {
widget = widget.getParent();
connector = Util.findConnectorFor(widget);
}
if (this.connector == connector) {
return true;
} else if (connector == null) {
return false;
} else if (connector.getWidget() instanceof VDDHasDropHandler) {
// Child connector handles its own drops
return false;
}
// Over non droppable child
return true;
}
示例20
@Override
public int getTabContentPosition(Widget w) {
for (int i = 0; i < getTabCount(); i++) {
ComponentConnector tabContent = getTab(i);
if (tabContent.getWidget() == w) {
return i;
}
}
return -1;
}
示例21
@Override
protected void extend(ServerConnector target) {
ComponentConnector connector = ((ComponentConnector) target);
LayoutManager layoutManager = connector.getLayoutManager();
Scheduler.get().scheduleFinally(() -> layoutManager.addElementResizeListener(
connector.getWidget().getElement(),
e -> layoutManager.setNeedsMeasureRecursively(connector)));
}
示例22
static VDropHandler createMockedVDropHandler(String dropTargetId) {
com.google.gwt.user.client.Element element = Mockito.mock(com.google.gwt.user.client.Element.class);
when(element.getId()).thenReturn(dropTargetId);
Widget widget = Mockito.mock(Widget.class);
when(widget.getElement()).thenReturn(element);
ComponentConnector connector = Mockito.mock(ComponentConnector.class);
when(connector.getWidget()).thenReturn(widget);
VDropHandler dropHandler = Mockito.mock(VDropHandler.class);
when(dropHandler.getConnector()).thenReturn(connector);
return dropHandler;
}
示例23
static VDragEvent createMockedVDragEvent(String dragSourceId, Widget widget) {
com.google.gwt.user.client.Element element = Mockito.mock(com.google.gwt.user.client.Element.class);
when(element.getId()).thenReturn(dragSourceId);
when(widget.getElement()).thenReturn(element);
ComponentConnector dragSource = Mockito.mock(ComponentConnector.class);
when(dragSource.getWidget()).thenReturn(widget);
VTransferable transferable = Mockito.mock(VTransferable.class);
when(transferable.getDragSource()).thenReturn(dragSource);
VDragEvent dragEvent = Mockito.mock(VDragEvent.class);
when(dragEvent.getTransferable()).thenReturn(transferable);
return dragEvent;
}
示例24
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
protected void extend(ServerConnector target) {
grid = (Grid<?>) ((ComponentConnector) target).getWidget();
wrappingEnabled = false;
WrappingClientRPC rpc = new WrappingClientRPC() {
@Override
public void setWrapping(boolean enable, int defaultRowHeight) {
if (wrappingEnabled != enable) {
wrappingEnabled = enable;
DEFAULT_HEIGHT = defaultRowHeight;
if (enable) {
// Figure out default header height
applyStyle.execute(0);
} else {
disableWrapping();
}
}
}
};
registerRpc(WrappingClientRPC.class, rpc);
resizeHandler = grid.addColumnResizeHandler(new ColumnResizeHandler() {
@Override
public void onColumnResize(ColumnResizeEvent event) {
Scheduler.get().scheduleFinally(new Scheduler.ScheduledCommand() {
@Override
public void execute() {
AnimationScheduler.get().requestAnimationFrame(applyStyle);
}
});
}
});
}
示例25
private void updateScrollDelegateScrollContainerHeight() {
boolean tableHorScrollbarVisible = GanttUtil
.isHorizontalScrollbarVisible(delegateScrollGridTarget.getEscalator());
int headerHeight = getWidget().getTimelineHeight();
// Adjust table's scroll container height to match the Gantt widget's
// scroll container height.
int newTableScrollContainerHeight = getWidget().getScrollContainerHeight();
if (getWidget().isContentOverflowingHorizontally()) {
getWidget().hideHorizontalScrollbarSpacer();
if (tableHorScrollbarVisible) {
newTableScrollContainerHeight += WidgetUtil.getNativeScrollbarSize();
}
} else {
if (tableHorScrollbarVisible) {
getWidget().showHorizontalScrollbarSpacer();
} else {
getWidget().hideHorizontalScrollbarSpacer();
}
}
GanttUtil.getTableWrapper(delegateScrollGridTarget.getEscalator()).getStyle().setProperty("height",
Math.max(0, headerHeight + newTableScrollContainerHeight) + "px");
delegateScrollGridTarget.getEscalator().getBody().getElement().getStyle().setProperty("height",
Math.max(0, newTableScrollContainerHeight) + "px");
delegateScrollGridTarget.getEscalator()
.setHeight(Math.max(0, headerHeight + newTableScrollContainerHeight) + "px");
getLayoutManager().setNeedsMeasure((ComponentConnector) getState().verticalScrollDelegateTarget);
}
示例26
/** Updates all steps predecessor visualizations. */
public void updateAllStepsPredecessors() {
for (ComponentConnector c : getChildComponents()) {
StepWidget stepWidget = ((StepConnector) c).getWidget();
stepWidget.updatePredecessor();
}
}
示例27
/**
* Return {@link StepWidget} objects that are related to the given
* StepWidget. Via {@link Step#getPredecessor()} for example.
*/
public Set<StepWidget> findRelatedSteps(Step targetStep, List<ComponentConnector> stepConnectors) {
Set<StepWidget> widgets = new HashSet<StepWidget>();
for (ComponentConnector con : stepConnectors) {
StepWidget stepWidget = ((StepConnector) con).getWidget();
if (targetStep.equals(stepWidget.getStep().getPredecessor())) {
widgets.add(stepWidget);
}
}
return widgets;
}
示例28
@Override
public void onConnectorHierarchyChange(ConnectorHierarchyChangeEvent connectorHierarchyChangeEvent) {
GwtDockLayoutImpl dockLayout = getWidget();
dockLayout.clear();
boolean noCenterElement = true;
List<ComponentConnector> childComponents = getChildComponents();
for (int i = 0; i < childComponents.size(); i++) {
ComponentConnector connector = childComponents.get(i);
DockLayoutState.Constraint constraint = getState().myConstraints.get(i);
Widget widget = GwtUIUtil.fillAndReturn(connector.getWidget());
switch (constraint) {
case TOP:
dockLayout.add(widget, GwtDockLayoutImpl.NORTH);
break;
case BOTTOM:
dockLayout.add(widget, GwtDockLayoutImpl.SOUTH);
break;
case LEFT:
dockLayout.add(widget, GwtDockLayoutImpl.WEST);
break;
case RIGHT:
dockLayout.add(widget, GwtDockLayoutImpl.EAST);
break;
case CENTER:
setCenterWidget(dockLayout, widget);
noCenterElement = false;
break;
}
}
if (noCenterElement) {
setCenterWidget(dockLayout, new SimplePanel());
}
}
示例29
@Contract("null -> null")
public static Widget connector2Widget(@Nullable Connector connector) {
if (connector == null) {
return null;
}
ComponentConnector componentConnector = (ComponentConnector)connector;
return componentConnector.getWidget();
}
示例30
@Override
protected ComponentConnectorLayoutSlot createComponentConnectorLayoutSlot(ComponentConnector component) {
return new CubaGridLayoutSlot(VGridLayout.CLASSNAME, component, getConnector());
}