List of usage examples for com.google.gwt.event.dom.client DragLeaveHandler DragLeaveHandler
DragLeaveHandler
From source file:ch.unifr.pai.mindmap.client.mindmap.BackgroundImgRepo.java
License:Apache License
/** * @param bgImg/*from w w w . j av a2s . c om*/ * - the image object that shall be adapted accordingly to the chosen data-url */ public BackgroundImgRepo(Image bgImg) { super(); add(fp); add(previewImage); getElement().getStyle().setOverflow(Overflow.VISIBLE); this.bgImg = bgImg; this.setHeight("100%"); this.setWidth("100%"); fp.getElement().getStyle().setBackgroundColor("grey"); fp.setWidth("100%"); fp.setHeight("100%"); fp.setWidget(hp); hp.setWidth("100%"); hp.setHeight("100%"); fp.setWidget(hp); previewImage.getElement().getStyle().setPosition(Position.ABSOLUTE); previewImage.getElement().getStyle().setTop(-120, Unit.PX); previewImage.getElement().getStyle().setHeight(110, Unit.PX); previewImage.getElement().getStyle().setBorderWidth(2, Unit.PX); previewImage.getElement().getStyle().setBorderColor("black"); previewImage.getElement().getStyle().setBorderStyle(BorderStyle.SOLID); previewImage.getElement().getStyle().setDisplay(Display.NONE); // Add a button for cleaning the browser as well PushButton emptyBg = new PushButton(new Image(GWT.getModuleBaseURL() + "images/emptyscreen.png")) { @Override public void onBrowserEvent(Event event) { if (MultiCursorController.isDefaultCursor(event)) { super.onBrowserEvent(event); } } }; emptyBg.setTitle("Remove background-image"); emptyBg.getElement().getStyle().setDisplay(Display.INLINE_BLOCK); emptyBg.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (MultiCursorController.isDefaultCursor(event.getNativeEvent())) { BackgroundImgRepo.this.bgImg.setVisible(false); } } }); hp.add(emptyBg); fp.addDragOverHandler(new DragOverHandler() { @Override public void onDragOver(DragOverEvent event) { fp.getElement().getStyle().setBackgroundColor("darkgrey"); } }); fp.addDragLeaveHandler(new DragLeaveHandler() { @Override public void onDragLeave(DragLeaveEvent event) { fp.getElement().getStyle().setBackgroundColor("grey"); } }); fp.addDropHandler(new DropHandler() { /** * Prevents the default behavior of the browser (otherwise, the browser would open the image in the current tab), reads the dragged files and adds * them as {@link PushButton} to the panel. * * @see com.google.gwt.event.dom.client.DropHandler#onDrop(com.google.gwt.event.dom.client.DropEvent) */ /* * (non-Javadoc) * @see com.google.gwt.event.dom.client.DropHandler#onDrop(com.google.gwt.event.dom.client.DropEvent) */ @Override public void onDrop(DropEvent event) { // event.stopPropagation(); event.preventDefault(); fp.getElement().getStyle().setBackgroundColor("grey"); JsArray<JavaScriptObject> files = getDataTransferFiles(event.getDataTransfer()); for (int i = 0; i < files.length(); i++) { final Image img = new Image(); PushButton button = new PushButton(img) { @Override public void onBrowserEvent(Event event) { if (MultiCursorController.isDefaultCursor(event)) { super.onBrowserEvent(event); } } }; button.setTitle("Set this image as background"); button.addClickHandler(new ClickHandler() { /** * Set the image of the button as the current background image * * @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent) */ @Override public void onClick(ClickEvent event) { if (MultiCursorController.isDefaultCursor(event.getNativeEvent())) { BackgroundImgRepo.this.bgImg.setVisible(true); BackgroundImgRepo.this.bgImg.getElement().setAttribute("src", img.getElement().getAttribute("src")); } } }); button.addMouseOverHandler(new MouseOverHandler() { /** * Show the preview image at the appropriate position and replace the data-url * * @see com.google.gwt.event.dom.client.MouseOverHandler#onMouseOver(com.google.gwt.event.dom.client.MouseOverEvent) */ @Override public void onMouseOver(MouseOverEvent event) { if (MultiCursorController.isDefaultCursor(event.getNativeEvent())) { BackgroundImgRepo.this.previewImage.getElement().getStyle() .setDisplay(Display.BLOCK); BackgroundImgRepo.this.previewImage.getElement().setAttribute("src", img.getElement().getAttribute("src")); Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { previewImage.getElement().getStyle().setLeft(img.getAbsoluteLeft() - BackgroundImgRepo.this.getAbsoluteLeft() - previewImage.getOffsetWidth() / 2 + img.getOffsetWidth() / 2, Unit.PX); } }); } } }); button.addMouseOutHandler(new MouseOutHandler() { /** * Hide the preview image * * @see com.google.gwt.event.dom.client.MouseOutHandler#onMouseOut(com.google.gwt.event.dom.client.MouseOutEvent) */ @Override public void onMouseOut(MouseOutEvent event) { if (MultiCursorController.isDefaultCursor(event.getNativeEvent())) { BackgroundImgRepo.this.previewImage.getElement().getStyle() .setDisplay(Display.NONE); } } }); // img.getElement().getStyle().setMargin(5, Unit.PX); // img.getElement().getStyle().setDisplay(Display.INLINE_BLOCK); img.setHeight("35px"); button.getElement().getStyle().setDisplay(Display.INLINE_BLOCK); hp.add(button); addBackgroundImage(img.getElement(), files.get(i)); } } }); }
From source file:co.fxl.gui.gwt.GWTElement.java
License:Open Source License
@SuppressWarnings("unchecked") public R addDragOverListener(final IDragMoveListener l) { hasDragListener = true;//from w w w.ja v a 2 s .c o m if (dummyDragListener != null) { dummyDragListener.removeHandler(); } container.widget.addDomHandler(new DragOverHandler() { @Override public void onDragOver(DragOverEvent event) { event.preventDefault(); l.onDragOver(new GWTPoint(event)); } }, DragOverEvent.getType()); container.widget.addDomHandler(new DragLeaveHandler() { @Override public void onDragLeave(final DragLeaveEvent event) { event.preventDefault(); l.onDragOut(new GWTPoint(event)); } }, DragLeaveEvent.getType()); return (R) this; }
From source file:com.akjava.gwt.html5.client.file.FileUtils.java
License:Apache License
public static FileUploadForm createSingleFileUploadForm(final DataURLListener listener, final boolean reset, boolean supportOnDrop) { final FileUploadForm form = new FileUploadForm(); form.getDropPanel().addDragOverHandler(new DragOverHandler() { @Override/*ww w .java2 s. c om*/ public void onDragOver(DragOverEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(2); } } }); form.getDropPanel().addDragLeaveHandler(new DragLeaveHandler() { @Override public void onDragLeave(DragLeaveEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(0); } } }); if (supportOnDrop) { form.getDropPanel().addDropHandler(new DropHandler() { @Override public void onDrop(DropEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(0); } final FileReader reader = FileReader.createFileReader(); final JsArray<File> files = FileUtils.transferToFile(event.getNativeEvent()); if (files.length() > 0) { reader.setOnLoad(new FileHandler() { @Override public void onLoad() { listener.uploaded(files.get(0), reader.getResultAsString()); if (reset) { form.reset(); } } }); reader.readAsDataURL(files.get(0)); } event.stopPropagation();//maybe stop root drop,//TODO } }); } form.getFileUpload().addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { final FileReader reader = FileReader.createFileReader(); final JsArray<File> files = FileUtils.toFile(event.getNativeEvent()); if (files.length() > 0) { reader.setOnLoad(new FileHandler() { @Override public void onLoad() { listener.uploaded(files.get(0), reader.getResultAsString()); if (reset) { form.reset(); } } }); reader.readAsDataURL(files.get(0)); } } }); return form; }
From source file:com.akjava.gwt.html5.client.file.FileUtils.java
License:Apache License
public static FileUploadForm createSingleFileUploadForm(final DataArrayListener listener, final boolean reset, boolean supportOnDrop) { final FileUploadForm form = new FileUploadForm(); form.getDropPanel().addDragOverHandler(new DragOverHandler() { @Override/* w w w . j av a2 s .co m*/ public void onDragOver(DragOverEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(2); } } }); form.getDropPanel().addDragLeaveHandler(new DragLeaveHandler() { @Override public void onDragLeave(DragLeaveEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(0); } } }); if (supportOnDrop) { form.getDropPanel().addDropHandler(new DropHandler() { @Override public void onDrop(DropEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(0); } final FileReader reader = FileReader.createFileReader(); final JsArray<File> files = FileUtils.transferToFile(event.getNativeEvent()); if (files.length() > 0) { reader.setOnLoad(new FileHandler() { @Override public void onLoad() { listener.uploaded(files.get(0), reader.getResultAsBuffer()); if (reset) { form.reset(); } } }); reader.readAsArrayBuffer(files.get(0)); } event.stopPropagation();//maybe stop root drop,//TODO } }); } form.getFileUpload().addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { final FileReader reader = FileReader.createFileReader(); final JsArray<File> files = FileUtils.toFile(event.getNativeEvent()); if (files.length() > 0) { reader.setOnLoad(new FileHandler() { @Override public void onLoad() { listener.uploaded(files.get(0), reader.getResultAsBuffer()); if (reset) { form.reset(); } } }); reader.readAsArrayBuffer(files.get(0)); } } }); return form; }
From source file:com.akjava.gwt.html5.client.file.FileUtils.java
License:Apache License
public static FileUploadForm createSingleTextFileUploadForm(final DataURLListener listener, final boolean reset, final String textEncode) { final FileUploadForm form = new FileUploadForm(); form.getDropPanel().addDragOverHandler(new DragOverHandler() { @Override//from ww w .j av a 2s. co m public void onDragOver(DragOverEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(2); } } }); form.getDropPanel().addDragLeaveHandler(new DragLeaveHandler() { @Override public void onDragLeave(DragLeaveEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(0); } } }); form.getDropPanel().addDropHandler(new DropHandler() { @Override public void onDrop(DropEvent event) { event.preventDefault(); if (form.isShowDragOverBorder()) { form.getDropPanel().setBorderWidth(0); } final FileReader reader = FileReader.createFileReader(); final JsArray<File> files = FileUtils.transferToFile(event.getNativeEvent()); if (files.length() > 0) { reader.setOnLoad(new FileHandler() { @Override public void onLoad() { listener.uploaded(files.get(0), reader.getResultAsString()); if (reset) { form.reset(); } } }); reader.readAsText(files.get(0), textEncode); } event.stopPropagation();//maybe stop root drop,//TODO } }); //form.getFileUpload().add form.getFileUpload().addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { //GWT.log("onChange:"); final FileReader reader = FileReader.createFileReader(); final JsArray<File> files = FileUtils.toFile(event.getNativeEvent()); if (files.length() > 0) { reader.setOnLoad(new FileHandler() { @Override public void onLoad() { listener.uploaded(files.get(0), reader.getResultAsString()); if (reset) { form.reset(); } } }); reader.readAsText(files.get(0), textEncode); } } }); return form; }
From source file:com.bearsoft.gwt.ui.widgets.grid.Grid.java
public Grid(ProvidesKey<T> aKeyProvider) { super();/* ww w .j a v a2 s . c o m*/ getElement().getStyle().setPosition(Style.Position.RELATIVE); getElement().appendChild(tdsStyleElement); getElement().appendChild(cellsStyleElement); getElement().appendChild(oddRowsStyleElement); getElement().appendChild(evenRowsStyleElement); setRowsHeight(25); hive = new FlexTable(); setWidget(hive); hive.setCellPadding(0); hive.setCellSpacing(0); hive.setBorderWidth(0); headerLeft = new GridSection<T>(aKeyProvider); headerLeftContainer = new ScrollPanel(headerLeft); headerRight = new GridSection<T>(aKeyProvider); headerRightContainer = new ScrollPanel(headerRight); frozenLeft = new GridSection<T>(aKeyProvider) { @Override protected void replaceAllChildren(List<T> values, SafeHtml html) { super.replaceAllChildren(values, html); footerLeft.redrawFooters(); } @Override protected void replaceChildren(List<T> values, int start, SafeHtml html) { super.replaceChildren(values, start, html); footerLeft.redrawFooters(); } }; frozenLeftContainer = new ScrollPanel(frozenLeft); frozenRight = new GridSection<T>(aKeyProvider) { @Override protected void replaceAllChildren(List<T> values, SafeHtml html) { super.replaceAllChildren(values, html); footerRight.redrawFooters(); } @Override protected void replaceChildren(List<T> values, int start, SafeHtml html) { super.replaceChildren(values, start, html); footerRight.redrawFooters(); } }; frozenRightContainer = new ScrollPanel(frozenRight); scrollableLeft = new GridSection<T>(aKeyProvider) { @Override protected void replaceAllChildren(List<T> values, SafeHtml html) { super.replaceAllChildren(values, html); footerLeft.redrawFooters(); } @Override protected void replaceChildren(List<T> values, int start, SafeHtml html) { super.replaceChildren(values, start, html); footerLeft.redrawFooters(); } }; scrollableLeftContainer = new ScrollPanel(scrollableLeft); scrollableRight = new GridSection<T>(aKeyProvider) { @Override protected void replaceAllChildren(List<T> values, SafeHtml html) { super.replaceAllChildren(values, html); footerRight.redrawFooters(); } @Override protected void replaceChildren(List<T> values, int start, SafeHtml html) { super.replaceChildren(values, start, html); footerRight.redrawFooters(); } }; scrollableRightContainer = new ScrollPanel(scrollableRight); footerLeft = new GridSection<>(aKeyProvider); footerLeftContainer = new ScrollPanel(footerLeft); footerRight = new GridSection<>(aKeyProvider); footerRightContainer = new ScrollPanel(footerRight); // positioning context / overflow setup // overflow for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer, frozenRightContainer, scrollableLeftContainer, footerLeftContainer, footerRightContainer }) { w.getElement().getStyle().setOverflow(Style.Overflow.HIDDEN); } // scrollableRightContainer.getElement().getStyle().setOverflow(Style.Overflow.AUTO); // default value // context for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer, frozenRightContainer, scrollableLeftContainer, scrollableRightContainer, footerLeftContainer, footerRightContainer }) { w.getElement().getFirstChildElement().getStyle().setPosition(Style.Position.ABSOLUTE); } // propagation of some widths headerLeft.setWidthPropagator(new GridWidthPropagator<T>(headerLeft) { @Override public void changed() { super.changed(); propagateHeaderWidth(); } }); for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenLeft, frozenRight, scrollableLeft, scrollableRight, footerLeft, footerRight }) { section.setWidthPropagator(new GridWidthPropagator<>(section)); } headerLeft.setColumnsPartners(new AbstractCellTable[] { frozenLeft, scrollableLeft, footerLeft }); headerRight.setColumnsPartners(new AbstractCellTable[] { frozenRight, scrollableRight, footerRight }); ColumnsRemover leftColumnsRemover = new ColumnsRemoverAdapter<T>(headerLeft, frozenLeft, scrollableLeft, footerLeft); ColumnsRemover rightColumnsRemover = new ColumnsRemoverAdapter<T>(headerRight, frozenRight, scrollableRight, footerRight); for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerLeft, frozenLeft, scrollableLeft, footerLeft }) { section.setColumnsRemover(leftColumnsRemover); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenRight, scrollableRight, footerRight }) { section.setColumnsRemover(rightColumnsRemover); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { frozenLeft, scrollableLeft, footerLeft }) { section.setHeaderSource(headerLeft); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { frozenRight, scrollableRight, footerRight }) { section.setHeaderSource(headerRight); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerLeft, frozenLeft, scrollableLeft }) { section.setFooterSource(footerLeft); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenRight, scrollableRight }) { section.setFooterSource(footerRight); } // hive organization hive.setWidget(0, 0, headerLeftContainer); hive.setWidget(0, 1, headerRightContainer); hive.setWidget(1, 0, frozenLeftContainer); hive.setWidget(1, 1, frozenRightContainer); hive.setWidget(2, 0, scrollableLeftContainer); hive.setWidget(2, 1, scrollableRightContainer); hive.setWidget(3, 0, footerLeftContainer); hive.setWidget(3, 1, footerRightContainer); for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer, frozenRightContainer, scrollableLeftContainer, scrollableRightContainer, footerLeftContainer, footerRightContainer }) { w.setWidth("100%"); w.setHeight("100%"); } // misc for (Widget w : new Widget[] { headerRightContainer, frozenRightContainer, footerRightContainer, scrollableLeftContainer }) { w.getElement().getParentElement().getStyle().setOverflow(Style.Overflow.HIDDEN); } hive.getElement().getStyle().setTableLayout(Style.TableLayout.FIXED); hive.getElement().getStyle().setPosition(Style.Position.RELATIVE); for (CellTable<?> tbl : new CellTable<?>[] { headerLeft, headerRight, frozenLeft, frozenRight, scrollableLeft, scrollableRight, footerLeft, footerRight }) { tbl.setTableLayoutFixed(true); } // header headerLeft.setHeaderBuilder(new ThemedHeaderOrFooterBuilder<T>(headerLeft, false, this)); headerLeft.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(headerLeft, true)); headerRight.setHeaderBuilder(new ThemedHeaderOrFooterBuilder<T>(headerRight, false, this)); headerRight.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(headerRight, true)); // footer footerLeft.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(footerLeft, false)); footerLeft.setFooterBuilder(new ThemedHeaderOrFooterBuilder<T>(footerLeft, true)); footerRight.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(footerRight, false)); footerRight.setFooterBuilder(new ThemedHeaderOrFooterBuilder<T>(footerRight, true)); // data bodies for (GridSection<?> section : new GridSection<?>[] { frozenLeft, frozenRight, scrollableLeft, scrollableRight }) { GridSection<T> gSection = (GridSection<T>) section; gSection.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(gSection, false)); gSection.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(gSection, true)); } for (GridSection<?> section : new GridSection<?>[] { headerLeft, headerRight, frozenLeft, frozenRight, scrollableLeft, scrollableRight, footerLeft, footerRight }) { section.setAutoHeaderRefreshDisabled(true); } for (GridSection<?> section : new GridSection<?>[] { headerLeft, headerRight, footerLeft, footerRight }) { section.setAutoFooterRefreshDisabled(true); } // cells installCellBuilders(); scrollableRightContainer.addScrollHandler(new ScrollHandler() { @Override public void onScroll(ScrollEvent event) { int aimTop = scrollableRightContainer.getElement().getScrollTop(); int aimLeft = scrollableRightContainer.getElement().getScrollLeft(); scrollableLeftContainer.getElement().setScrollTop(aimTop); int factTopDelta = aimTop - scrollableLeftContainer.getElement().getScrollTop(); if (factTopDelta > 0) { scrollableLeftContainer.getElement().getStyle().setBottom(factTopDelta, Style.Unit.PX); } else { scrollableLeftContainer.getElement().getStyle().clearBottom(); } headerRightContainer.getElement().setScrollLeft(aimLeft); int factLeftDelta0 = aimLeft - headerRightContainer.getElement().getScrollLeft(); if (factLeftDelta0 > 0) { headerRightContainer.getElement().getStyle().setRight(factLeftDelta0, Style.Unit.PX); } else { headerRightContainer.getElement().getStyle().clearRight(); } frozenRightContainer.getElement().setScrollLeft(aimLeft); int factLeftDelta1 = aimLeft - frozenRightContainer.getElement().getScrollLeft(); if (factLeftDelta1 > 0) { frozenRightContainer.getElement().getStyle().setRight(factLeftDelta1, Style.Unit.PX); } else { frozenRightContainer.getElement().getStyle().clearRight(); } footerRightContainer.getElement() .setScrollLeft(scrollableRightContainer.getElement().getScrollLeft()); int factLeftDelta2 = aimLeft - footerRightContainer.getElement().getScrollLeft(); if (factLeftDelta2 > 0) { footerRightContainer.getElement().getStyle().setRight(factLeftDelta2, Style.Unit.PX); } else { footerRightContainer.getElement().getStyle().clearRight(); } } }); ghostLine = Document.get().createDivElement(); ghostLine.addClassName(RULER_STYLE); ghostLine.getStyle().setPosition(Style.Position.ABSOLUTE); ghostLine.getStyle().setTop(0, Style.Unit.PX); ghostColumn = Document.get().createDivElement(); ghostColumn.addClassName(COLUMN_PHANTOM_STYLE); ghostColumn.getStyle().setPosition(Style.Position.ABSOLUTE); ghostColumn.getStyle().setTop(0, Style.Unit.PX); addDomHandler(new DragEnterHandler() { @Override public void onDragEnter(DragEnterEvent event) { if (DraggedColumn.instance != null) { if (DraggedColumn.instance.isMove()) { event.preventDefault(); event.stopPropagation(); DraggedColumn<T> target = findTargetDraggedColumn(event.getNativeEvent().getEventTarget()); if (target != null) { showColumnMoveDecorations(target); event.getDataTransfer().<XDataTransfer>cast().setDropEffect("move"); } else { event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none"); } } else { } } else { event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none"); } } }, DragEnterEvent.getType()); addDomHandler(new DragHandler() { @Override public void onDrag(DragEvent event) { if (DraggedColumn.instance != null && DraggedColumn.instance.isResize()) { event.stopPropagation(); /* int newWidth = event.getNativeEvent().getClientX() - DraggedColumn.instance.getCellElement().getAbsoluteLeft(); if (newWidth > MINIMUM_COLUMN_WIDTH) { event.getDataTransfer().<XDataTransfer> cast().setDropEffect("move"); } else { event.getDataTransfer().<XDataTransfer> cast().setDropEffect("none"); } */ } } }, DragEvent.getType()); addDomHandler(new DragOverHandler() { @Override public void onDragOver(DragOverEvent event) { if (DraggedColumn.instance != null) { event.preventDefault(); event.stopPropagation(); if (DraggedColumn.instance.isMove()) { DraggedColumn<T> target = findTargetDraggedColumn(event.getNativeEvent().getEventTarget()); if (target != null) { event.getDataTransfer().<XDataTransfer>cast().setDropEffect("move"); } else { hideColumnDecorations(); event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none"); } } else { Element hostElement = Grid.this.getElement(); int clientX = event.getNativeEvent().getClientX(); int hostAbsX = hostElement.getAbsoluteLeft(); int hostScrollX = hostElement.getScrollLeft(); int docScrollX = hostElement.getOwnerDocument().getScrollLeft(); int relativeX = clientX - hostAbsX + hostScrollX + docScrollX; ghostLine.getStyle().setLeft(relativeX, Style.Unit.PX); ghostLine.getStyle().setHeight(hostElement.getClientHeight(), Style.Unit.PX); if (ghostLine.getParentElement() != hostElement) { hostElement.appendChild(ghostLine); } } } } }, DragOverEvent.getType()); addDomHandler(new DragLeaveHandler() { @Override public void onDragLeave(DragLeaveEvent event) { if (DraggedColumn.instance != null) { event.stopPropagation(); if (DraggedColumn.instance.isMove()) { if (event.getNativeEvent().getEventTarget() == (JavaScriptObject) Grid.this.getElement()) { hideColumnDecorations(); } } } } }, DragLeaveEvent.getType()); addDomHandler(new DragEndHandler() { @Override public void onDragEnd(DragEndEvent event) { event.stopPropagation(); hideColumnDecorations(); DraggedColumn.instance = null; } }, DragEndEvent.getType()); addDomHandler(new DropHandler() { @Override public void onDrop(DropEvent event) { DraggedColumn<?> source = DraggedColumn.instance; DraggedColumn<T> target = targetDraggedColumn; hideColumnDecorations(); DraggedColumn.instance = null; if (source != null) { event.preventDefault(); event.stopPropagation(); if (source.isMove()) { AbstractCellTable<T> sourceSection = (AbstractCellTable<T>) source.getTable(); // target table may be any section in our grid if (target != null) { Header<?> sourceHeader = source.getHeader(); Header<?> targetHeader = target.getHeader(); if (sourceHeader instanceof DraggableHeader<?> && targetHeader instanceof DraggableHeader<?>) { DraggableHeader<T> sourceDH = (DraggableHeader<T>) sourceHeader; DraggableHeader<T> targetDH = (DraggableHeader<T>) targetHeader; moveColumnNode(sourceDH.getHeaderNode(), targetDH.getHeaderNode()); } else { int sourceIndex = source.getColumnIndex(); int targetIndex = target.getColumnIndex(); GridSection<T> targetSection = (GridSection<T>) target.getTable(); boolean isSourceLeft = sourceSection == headerLeft || sourceSection == frozenLeft || sourceSection == scrollableLeft || sourceSection == footerLeft; boolean isTargetLeft = targetSection == headerLeft || targetSection == frozenLeft || targetSection == scrollableLeft || targetSection == footerLeft; sourceSection = isSourceLeft ? headerLeft : headerRight; targetSection = isTargetLeft ? headerLeft : headerRight; int generalSourceIndex = isSourceLeft ? sourceIndex : sourceIndex + frozenColumns; int generalTargetIndex = isTargetLeft ? targetIndex : targetIndex + frozenColumns; Header<?> header = sourceSection.getHeader(sourceIndex); if (header instanceof DraggableHeader) { ((DraggableHeader) header).setTable(targetSection); } if (generalSourceIndex != generalTargetIndex) { Column<T, ?> column = (Column<T, ?>) source.getColumn(); if (!(header instanceof DraggableHeader) || ((DraggableHeader) header).isMoveable()) { moveColumn(generalSourceIndex, generalTargetIndex); } } } } } else { Header<?> header = source.getHeader(); if (!(header instanceof DraggableHeader) || ((DraggableHeader) header).isResizable()) { int newWidth = Math.max( event.getNativeEvent().getClientX() - source.getCellElement().getAbsoluteLeft(), MINIMUM_COLUMN_WIDTH); // Source and target tables are the same, so we can // cast to DraggedColumn<T> with no care setColumnWidthFromHeaderDrag(((DraggedColumn<T>) source).getColumn(), newWidth, Style.Unit.PX); } } } } }, DropEvent.getType()); columnsChevron.getElement().getStyle().setPosition(Style.Position.ABSOLUTE); columnsChevron.getElement().addClassName(COLUMNS_CHEVRON_STYLE); getElement().appendChild(columnsChevron.getElement()); columnsChevron.addDomHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { PopupPanel pp = new PopupPanel(); pp.setAutoHideEnabled(true); pp.setAutoHideOnHistoryEventsEnabled(true); pp.setAnimationEnabled(true); MenuBar columnsMenu = new MenuBar(true); fillColumns(columnsMenu, headerLeft); fillColumns(columnsMenu, headerRight); pp.setWidget(columnsMenu); pp.setPopupPosition(columnsChevron.getAbsoluteLeft(), columnsChevron.getAbsoluteTop()); pp.showRelativeTo(columnsChevron); } private void fillColumns(MenuBar aTarget, final GridSection<T> aSection) { for (int i = 0; i < aSection.getColumnCount(); i++) { Header<?> h = aSection.getHeader(i); final Column<T, ?> column = aSection.getColumn(i); SafeHtml rendered; if (h.getValue() instanceof String) { String hVal = (String) h.getValue(); rendered = hVal.startsWith("<html>") ? SafeHtmlUtils.fromTrustedString(hVal.substring(6)) : SafeHtmlUtils.fromString(hVal); } else { Cell.Context context = new Cell.Context(0, i, h.getKey()); SafeHtmlBuilder sb = new SafeHtmlBuilder(); h.render(context, sb); rendered = sb.toSafeHtml(); } MenuItemCheckBox miCheck = new MenuItemCheckBox(!aSection.isColumnHidden(column), rendered.asString(), true); miCheck.addValueChangeHandler(new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { if (Boolean.TRUE.equals(event.getValue())) { showColumn(column); } else { hideColumn(column); } Grid.this.onResize(); } }); aTarget.addItem(miCheck); } } }, ClickEvent.getType()); ColumnSortEvent.Handler sectionSortHandler = new ColumnSortEvent.Handler() { @Override public void onColumnSort(ColumnSortEvent event) { boolean isCtrlKey = ((GridSection<?>) event.getSource()).isCtrlKey(); boolean contains = false; int containsAt = -1; for (int i = 0; i < sortList.size(); i++) { if (sortList.get(i).getColumn() == event.getColumn()) { contains = true; containsAt = i; break; } } if (!contains) { if (!isCtrlKey) { sortList.clear(); } sortList.insert(sortList.size(), new ColumnSortList.ColumnSortInfo(event.getColumn(), true)); } else { boolean wasAscending = sortList.get(containsAt).isAscending(); if (!isCtrlKey) { sortList.clear(); if (wasAscending) { sortList.push(new ColumnSortList.ColumnSortInfo(event.getColumn(), false)); } } else { sortList.remove(sortList.get(containsAt)); if (wasAscending) { sortList.insert(containsAt, new ColumnSortList.ColumnSortInfo(event.getColumn(), false)); } } } ColumnSortEvent.fire(Grid.this, sortList); } }; headerLeft.getColumnSortList().setLimit(1); headerLeft.addColumnSortHandler(sectionSortHandler); headerRight.getColumnSortList().setLimit(1); headerRight.addColumnSortHandler(sectionSortHandler); gridColor = PublishedColor.create(211, 211, 211, 255); regenerateDynamicTDStyles(); regenerateDynamicOddRowsStyles(); getElement().<XElement>cast().addResizingTransitionEnd(this); }
From source file:com.eas.grid.Grid.java
public Grid(ProvidesKey<T> aKeyProvider) { super();/*from w w w.j ava 2 s . co m*/ getElement().getStyle().setPosition(Style.Position.RELATIVE); getElement().appendChild(tdsStyleElement); getElement().appendChild(cellsStyleElement); getElement().appendChild(oddRowsStyleElement); getElement().appendChild(evenRowsStyleElement); setRowsHeight(30); hive = new FlexTable(); setWidget(hive); hive.setCellPadding(0); hive.setCellSpacing(0); hive.setBorderWidth(0); headerLeft = new GridSection<T>(aKeyProvider); headerLeftContainer = new ScrollPanel(headerLeft); headerRight = new GridSection<T>(aKeyProvider); headerRightContainer = new ScrollPanel(headerRight); frozenLeft = new GridSection<T>(aKeyProvider) { @Override protected void replaceAllChildren(List<T> values, SafeHtml html) { super.replaceAllChildren(values, html); footerLeft.redrawFooters(); frozenLeftRendered(); } @Override protected void replaceChildren(List<T> values, int start, SafeHtml html) { super.replaceChildren(values, start, html); footerLeft.redrawFooters(); frozenLeftRendered(); } @Override protected void onFocus() { super.onFocus(); Element focused = getKeyboardSelectedElement(); if (focused != null) focused.setTabIndex(tabIndex); FocusEvent.fireNativeEvent(Document.get().createFocusEvent(), Grid.this); } @Override protected void onBlur() { super.onBlur(); FocusEvent.fireNativeEvent(Document.get().createBlurEvent(), Grid.this); } }; frozenLeftContainer = new ScrollPanel(frozenLeft); frozenRight = new GridSection<T>(aKeyProvider) { @Override protected void replaceAllChildren(List<T> values, SafeHtml html) { super.replaceAllChildren(values, html); footerRight.redrawFooters(); frozenRightRendered(); } @Override protected void replaceChildren(List<T> values, int start, SafeHtml html) { super.replaceChildren(values, start, html); footerRight.redrawFooters(); frozenRightRendered(); } @Override protected void onFocus() { super.onFocus(); Element focused = getKeyboardSelectedElement(); if (focused != null) focused.setTabIndex(tabIndex); FocusEvent.fireNativeEvent(Document.get().createFocusEvent(), Grid.this); } @Override protected void onBlur() { super.onBlur(); FocusEvent.fireNativeEvent(Document.get().createBlurEvent(), Grid.this); } }; frozenRightContainer = new ScrollPanel(frozenRight); scrollableLeft = new GridSection<T>(aKeyProvider) { @Override protected void replaceAllChildren(List<T> values, SafeHtml html) { super.replaceAllChildren(values, html); footerLeft.redrawFooters(); scrollableLeftRendered(); } @Override protected void replaceChildren(List<T> values, int start, SafeHtml html) { super.replaceChildren(values, start, html); footerLeft.redrawFooters(); scrollableLeftRendered(); } @Override protected void onFocus() { super.onFocus(); Element focused = getKeyboardSelectedElement(); if (focused != null) focused.setTabIndex(tabIndex); FocusEvent.fireNativeEvent(Document.get().createFocusEvent(), Grid.this); } @Override protected void onBlur() { super.onBlur(); FocusEvent.fireNativeEvent(Document.get().createBlurEvent(), Grid.this); } }; scrollableLeftContainer = new ScrollPanel(scrollableLeft); scrollableRight = new GridSection<T>(aKeyProvider) { @Override protected void replaceAllChildren(List<T> values, SafeHtml html) { super.replaceAllChildren(values, html); footerRight.redrawFooters(); scrollableRightRendered(); } @Override protected void replaceChildren(List<T> values, int start, SafeHtml html) { super.replaceChildren(values, start, html); footerRight.redrawFooters(); scrollableRightRendered(); } @Override protected void onFocus() { super.onFocus(); Element focused = getKeyboardSelectedElement(); if (focused != null) focused.setTabIndex(tabIndex); FocusEvent.fireNativeEvent(Document.get().createFocusEvent(), Grid.this); } @Override protected void onBlur() { super.onBlur(); FocusEvent.fireNativeEvent(Document.get().createBlurEvent(), Grid.this); } }; scrollableRightContainer = new ScrollPanel(scrollableRight); footerLeft = new GridSection<>(aKeyProvider); footerLeftContainer = new ScrollPanel(footerLeft); footerRight = new GridSection<>(aKeyProvider); footerRightContainer = new ScrollPanel(footerRight); // positioning context / overflow setup // overflow for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer, frozenRightContainer, scrollableLeftContainer, footerLeftContainer, footerRightContainer }) { w.getElement().getStyle().setOverflow(Style.Overflow.HIDDEN); } // scrollableRightContainer.getElement().getStyle().setOverflow(Style.Overflow.AUTO); // default value // context for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer, frozenRightContainer, scrollableLeftContainer, scrollableRightContainer, footerLeftContainer, footerRightContainer }) { w.getElement().getFirstChildElement().getStyle().setPosition(Style.Position.ABSOLUTE); } // propagation of some widths headerLeft.setWidthPropagator(new GridWidthPropagator<T>(headerLeft) { @Override public void changed() { super.changed(); propagateHeaderWidth(); } }); for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenLeft, frozenRight, scrollableLeft, scrollableRight, footerLeft, footerRight }) { section.setWidthPropagator(new GridWidthPropagator<>(section)); } headerLeft.setColumnsPartners(new AbstractCellTable[] { frozenLeft, scrollableLeft, footerLeft }); headerRight.setColumnsPartners(new AbstractCellTable[] { frozenRight, scrollableRight, footerRight }); ColumnsRemover leftColumnsRemover = new ColumnsRemoverAdapter<T>(headerLeft, frozenLeft, scrollableLeft, footerLeft); ColumnsRemover rightColumnsRemover = new ColumnsRemoverAdapter<T>(headerRight, frozenRight, scrollableRight, footerRight); for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerLeft, frozenLeft, scrollableLeft, footerLeft }) { section.setColumnsRemover(leftColumnsRemover); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenRight, scrollableRight, footerRight }) { section.setColumnsRemover(rightColumnsRemover); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { frozenLeft, scrollableLeft, footerLeft }) { section.setHeaderSource(headerLeft); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { frozenRight, scrollableRight, footerRight }) { section.setHeaderSource(headerRight); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerLeft, frozenLeft, scrollableLeft }) { section.setFooterSource(footerLeft); } for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenRight, scrollableRight }) { section.setFooterSource(footerRight); } // hive organization hive.setWidget(0, 0, headerLeftContainer); hive.setWidget(0, 1, headerRightContainer); hive.setWidget(1, 0, frozenLeftContainer); hive.setWidget(1, 1, frozenRightContainer); hive.setWidget(2, 0, scrollableLeftContainer); hive.setWidget(2, 1, scrollableRightContainer); hive.setWidget(3, 0, footerLeftContainer); hive.setWidget(3, 1, footerRightContainer); for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer, frozenRightContainer, scrollableLeftContainer, scrollableRightContainer, footerLeftContainer, footerRightContainer }) { w.setWidth("100%"); w.setHeight("100%"); } // misc for (Widget w : new Widget[] { headerRightContainer, frozenRightContainer, footerRightContainer, scrollableLeftContainer }) { w.getElement().getParentElement().getStyle().setOverflow(Style.Overflow.HIDDEN); } hive.getElement().getStyle().setTableLayout(Style.TableLayout.FIXED); hive.getElement().getStyle().setPosition(Style.Position.RELATIVE); for (CellTable<?> tbl : new CellTable<?>[] { headerLeft, headerRight, frozenLeft, frozenRight, scrollableLeft, scrollableRight, footerLeft, footerRight }) { tbl.setTableLayoutFixed(true); } // header headerLeft.setHeaderBuilder(new ThemedHeaderOrFooterBuilder<T>(headerLeft, false, this)); headerLeft.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(headerLeft, true)); headerRight.setHeaderBuilder(new ThemedHeaderOrFooterBuilder<T>(headerRight, false, this)); headerRight.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(headerRight, true)); // footer footerLeft.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(footerLeft, false)); footerLeft.setFooterBuilder(new ThemedHeaderOrFooterBuilder<T>(footerLeft, true)); footerRight.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(footerRight, false)); footerRight.setFooterBuilder(new ThemedHeaderOrFooterBuilder<T>(footerRight, true)); // data bodies for (GridSection<?> section : new GridSection<?>[] { frozenLeft, frozenRight, scrollableLeft, scrollableRight }) { GridSection<T> gSection = (GridSection<T>) section; gSection.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(gSection, false)); gSection.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(gSection, true)); } for (GridSection<?> section : new GridSection<?>[] { headerLeft, headerRight, frozenLeft, frozenRight, scrollableLeft, scrollableRight, footerLeft, footerRight }) { section.setAutoHeaderRefreshDisabled(true); } for (GridSection<?> section : new GridSection<?>[] { headerLeft, headerRight, footerLeft, footerRight }) { section.setAutoFooterRefreshDisabled(true); } // cells installCellBuilders(); scrollableRightContainer.addScrollHandler(new ScrollHandler() { @Override public void onScroll(ScrollEvent event) { int aimLeft = scrollableRightContainer.getElement().getScrollLeft(); if (isHeaderVisible()) { headerRightContainer.getElement().setScrollLeft(aimLeft); int factLeftDelta0 = aimLeft - headerRightContainer.getElement().getScrollLeft(); if (factLeftDelta0 > 0) { headerRightContainer.getElement().getStyle().setRight(factLeftDelta0, Style.Unit.PX); } else { headerRightContainer.getElement().getStyle().clearRight(); } } if (frozenColumns > 0 || frozenRows > 0) { int aimTop = scrollableRightContainer.getElement().getScrollTop(); scrollableLeftContainer.getElement().setScrollTop(aimTop); int factTopDelta = aimTop - scrollableLeftContainer.getElement().getScrollTop(); if (factTopDelta > 0) { scrollableLeftContainer.getElement().getStyle().setBottom(factTopDelta, Style.Unit.PX); } else { scrollableLeftContainer.getElement().getStyle().clearBottom(); } frozenRightContainer.getElement().setScrollLeft(aimLeft); int factLeftDelta1 = aimLeft - frozenRightContainer.getElement().getScrollLeft(); if (factLeftDelta1 > 0) { frozenRightContainer.getElement().getStyle().setRight(factLeftDelta1, Style.Unit.PX); } else { frozenRightContainer.getElement().getStyle().clearRight(); } footerRightContainer.getElement() .setScrollLeft(scrollableRightContainer.getElement().getScrollLeft()); int factLeftDelta2 = aimLeft - footerRightContainer.getElement().getScrollLeft(); if (factLeftDelta2 > 0) { footerRightContainer.getElement().getStyle().setRight(factLeftDelta2, Style.Unit.PX); } else { footerRightContainer.getElement().getStyle().clearRight(); } } } }); ghostLine = Document.get().createDivElement(); ghostLine.addClassName(RULER_STYLE); ghostLine.getStyle().setPosition(Style.Position.ABSOLUTE); ghostLine.getStyle().setTop(0, Style.Unit.PX); ghostColumn = Document.get().createDivElement(); ghostColumn.addClassName(COLUMN_PHANTOM_STYLE); ghostColumn.getStyle().setPosition(Style.Position.ABSOLUTE); ghostColumn.getStyle().setTop(0, Style.Unit.PX); addDomHandler(new DragEnterHandler() { @Override public void onDragEnter(DragEnterEvent event) { if (DraggedColumn.instance != null) { if (DraggedColumn.instance.isMove()) { event.preventDefault(); event.stopPropagation(); DraggedColumn<T> target = findTargetDraggedColumn(event.getNativeEvent().getEventTarget()); if (target != null) { showColumnMoveDecorations(target); event.getDataTransfer().<XDataTransfer>cast().setDropEffect("move"); } else { event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none"); } } else { } } } }, DragEnterEvent.getType()); addDomHandler(new DragHandler() { @Override public void onDrag(DragEvent event) { if (DraggedColumn.instance != null && DraggedColumn.instance.isResize()) { event.stopPropagation(); } } }, DragEvent.getType()); addDomHandler(new DragOverHandler() { @Override public void onDragOver(DragOverEvent event) { if (DraggedColumn.instance != null) { event.preventDefault(); event.stopPropagation(); if (DraggedColumn.instance.isMove()) { DraggedColumn<T> target = findTargetDraggedColumn(event.getNativeEvent().getEventTarget()); if (target != null) { event.getDataTransfer().<XDataTransfer>cast().setDropEffect("move"); } else { hideColumnDecorations(); event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none"); } } else { Element hostElement = Grid.this.getElement(); int clientX = event.getNativeEvent().getClientX(); int hostAbsX = hostElement.getAbsoluteLeft(); int hostScrollX = hostElement.getScrollLeft(); int docScrollX = hostElement.getOwnerDocument().getScrollLeft(); int relativeX = clientX - hostAbsX + hostScrollX + docScrollX; ghostLine.getStyle().setLeft(relativeX, Style.Unit.PX); ghostLine.getStyle().setHeight(hostElement.getClientHeight(), Style.Unit.PX); if (ghostLine.getParentElement() != hostElement) { hostElement.appendChild(ghostLine); } } } } }, DragOverEvent.getType()); addDomHandler(new DragLeaveHandler() { @Override public void onDragLeave(DragLeaveEvent event) { if (DraggedColumn.instance != null) { event.stopPropagation(); if (DraggedColumn.instance.isMove()) { if (event.getNativeEvent().getEventTarget() == (JavaScriptObject) Grid.this.getElement()) { hideColumnDecorations(); } } } } }, DragLeaveEvent.getType()); addDomHandler(new DragEndHandler() { @Override public void onDragEnd(DragEndEvent event) { if (DraggedColumn.instance != null) { event.stopPropagation(); hideColumnDecorations(); DraggedColumn.instance = null; } } }, DragEndEvent.getType()); addDomHandler(new DropHandler() { @Override public void onDrop(DropEvent event) { DraggedColumn<?> source = DraggedColumn.instance; DraggedColumn<T> target = targetDraggedColumn; hideColumnDecorations(); DraggedColumn.instance = null; if (source != null) { event.preventDefault(); event.stopPropagation(); if (source.isMove()) { AbstractCellTable<T> sourceSection = (AbstractCellTable<T>) source.getTable(); // target table may be any section in our grid if (target != null) { Header<?> sourceHeader = source.getHeader(); Header<?> targetHeader = target.getHeader(); if (sourceHeader instanceof DraggableHeader<?> && targetHeader instanceof DraggableHeader<?>) { DraggableHeader<T> sourceDH = (DraggableHeader<T>) sourceHeader; DraggableHeader<T> targetDH = (DraggableHeader<T>) targetHeader; moveColumnNode(sourceDH.getHeaderNode(), targetDH.getHeaderNode()); } else { int sourceIndex = source.getColumnIndex(); int targetIndex = target.getColumnIndex(); GridSection<T> targetSection = (GridSection<T>) target.getTable(); boolean isSourceLeft = sourceSection == headerLeft || sourceSection == frozenLeft || sourceSection == scrollableLeft || sourceSection == footerLeft; boolean isTargetLeft = targetSection == headerLeft || targetSection == frozenLeft || targetSection == scrollableLeft || targetSection == footerLeft; sourceSection = isSourceLeft ? headerLeft : headerRight; targetSection = isTargetLeft ? headerLeft : headerRight; int generalSourceIndex = isSourceLeft ? sourceIndex : sourceIndex + frozenColumns; int generalTargetIndex = isTargetLeft ? targetIndex : targetIndex + frozenColumns; Header<?> header = sourceSection.getHeader(sourceIndex); if (header instanceof DraggableHeader) { ((DraggableHeader) header).setTable(targetSection); } if (generalSourceIndex != generalTargetIndex) { Column<T, ?> column = (Column<T, ?>) source.getColumn(); if (!(header instanceof DraggableHeader) || ((DraggableHeader) header).isMoveable()) { moveColumn(generalSourceIndex, generalTargetIndex); } } } } } else { Header<?> header = source.getHeader(); if (!(header instanceof DraggableHeader) || ((DraggableHeader) header).isResizable()) { int newWidth = Math.max( event.getNativeEvent().getClientX() - source.getCellElement().getAbsoluteLeft(), MINIMUM_COLUMN_WIDTH); // Source and target tables are the same, so we can // cast to DraggedColumn<T> with no care setColumnWidthFromHeaderDrag(((DraggedColumn<T>) source).getColumn(), newWidth, Style.Unit.PX); } } } } }, DropEvent.getType()); columnsChevron.getElement().getStyle().setPosition(Style.Position.ABSOLUTE); columnsChevron.getElement().addClassName(COLUMNS_CHEVRON_STYLE); getElement().appendChild(columnsChevron.getElement()); columnsChevron.addDomHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { PlatypusPopupMenu columnsMenu = new PlatypusPopupMenu(); fillColumns(columnsMenu, headerLeft); fillColumns(columnsMenu, headerRight); columnsMenu.setPopupPosition(columnsChevron.getAbsoluteLeft(), columnsChevron.getAbsoluteTop()); columnsMenu.showRelativeTo(columnsChevron); } private void fillColumns(MenuBar aTarget, final GridSection<T> aSection) { for (int i = 0; i < aSection.getColumnCount(); i++) { Header<?> h = aSection.getHeader(i); final Column<T, ?> column = aSection.getColumn(i); SafeHtml rendered; if (h.getValue() instanceof String) { String hVal = (String) h.getValue(); rendered = hVal.startsWith("<html>") ? SafeHtmlUtils.fromTrustedString(hVal.substring(6)) : SafeHtmlUtils.fromString(hVal); } else { Cell.Context context = new Cell.Context(0, i, h.getKey()); SafeHtmlBuilder sb = new SafeHtmlBuilder(); h.render(context, sb); rendered = sb.toSafeHtml(); } MenuItemCheckBox miCheck = new MenuItemCheckBox(!aSection.isColumnHidden(column), rendered.asString(), true); miCheck.addValueChangeHandler(new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { if (Boolean.TRUE.equals(event.getValue())) { showColumn(column); } else { hideColumn(column); } Grid.this.onResize(); } }); aTarget.addItem(miCheck); } } }, ClickEvent.getType()); ColumnSortEvent.Handler sectionSortHandler = new ColumnSortEvent.Handler() { @Override public void onColumnSort(ColumnSortEvent event) { boolean isCtrlKey = ((GridSection<?>) event.getSource()).isCtrlKey(); boolean contains = false; int containsAt = -1; for (int i = 0; i < sortList.size(); i++) { if (sortList.get(i).getColumn() == event.getColumn()) { contains = true; containsAt = i; break; } } if (!contains) { if (!isCtrlKey) { sortList.clear(); } sortList.insert(sortList.size(), new ColumnSortList.ColumnSortInfo(event.getColumn(), true)); } else { boolean wasAscending = sortList.get(containsAt).isAscending(); if (!isCtrlKey) { sortList.clear(); if (wasAscending) { sortList.push(new ColumnSortList.ColumnSortInfo(event.getColumn(), false)); } } else { sortList.remove(sortList.get(containsAt)); if (wasAscending) { sortList.insert(containsAt, new ColumnSortList.ColumnSortInfo(event.getColumn(), false)); } } } ColumnSortEvent.fire(Grid.this, sortList); } }; headerLeft.getColumnSortList().setLimit(1); headerLeft.addColumnSortHandler(sectionSortHandler); headerRight.getColumnSortList().setLimit(1); headerRight.addColumnSortHandler(sectionSortHandler); gridColor = PublishedColor.create(211, 211, 211, 255); regenerateDynamicTDStyles(); regenerateDynamicOddRowsStyles(); getElement().<XElement>cast().addResizingTransitionEnd(this); setStyleName(GRID_SHELL_STYLE); }
From source file:com.ephesoft.gxt.core.client.DragDropFlowPanel.java
License:Open Source License
private void attachHandlers() { this.addDragOverHandler(new DragOverHandler() { @Override/*from w w w . jav a 2s .c om*/ public void onDragOver(final DragOverEvent event) { dragEventScroll = true; } }); this.addDragLeaveHandler(new DragLeaveHandler() { @Override public void onDragLeave(final DragLeaveEvent event) { } }); this.addDropHandler(new DropHandler() { @Override public void onDrop(final DropEvent event) { event.preventDefault(); DragDropFlowPanel.this.getElement().getStyle().clearBackgroundColor(); final int widgetIndex = DragDropFlowPanel.this .getWidgetIndex(DragDropFlowPanel.lastDraggedOverimage); setLastDraggedOverimageIndex(widgetIndex); final DragImage dragImage = getDraggableImage(event); if (null != dragImage && null != DragDropFlowPanel.draggedImage) { DragImage image = getImageByUrl(draggedImage.getUrl()); if (null != image) { title = DragDropFlowPanel.this.getWidget(widgetIndex).getTitle(); DragDropFlowPanel.this.remove(image); } if (widgetIndex != -1) { DragDropFlowPanel.this.insert(dragImage, widgetIndex); } else { DragDropFlowPanel.this.add(dragImage); } if (null != imageSelectionListener) { imageSelectionListener.onDrop(dragImage, getImageURLs(), title); } } } }); }
From source file:com.ephesoft.gxt.core.client.ui.widget.MultiFileUploader.java
License:Open Source License
protected void addDropHandler() { dragDropLabel.addDragOverHandler(new DragOverHandler() { @Override//from w w w .j a v a2 s . c o m public void onDragOver(DragOverEvent event) { if (isEnableDragDrop()) { dragDropLabel.addStyleName(DRAG_OVER_STYLE); } } }); dragDropLabel.addDragLeaveHandler(new DragLeaveHandler() { @Override public void onDragLeave(DragLeaveEvent event) { if (isEnableDragDrop()) { dragDropLabel.removeStyleName(DRAG_OVER_STYLE); } } }); dragDropLabel.addDropHandler(new DropHandler() { @Override public void onDrop(DropEvent event) { if (isEnableDragDrop()) { dragDropLabel.removeStyleName(DRAG_OVER_STYLE); final JsArray<JavaScriptObject> droppedFiles = Uploader.getDroppedFiles(event.getNativeEvent()) .cast(); uploader.addFilesToQueue(droppedFiles); event.preventDefault(); } } }); }
From source file:com.google.gwt.sample.mobilewebapp.client.desktop.DesktopTaskEditView.java
License:Apache License
/** * Construct a new {@link DesktopTaskEditView}. *//*from w w w . j a v a 2 s . c om*/ public DesktopTaskEditView() { // Initialize the styles. resources = GWT.create(Resources.class); resources.style().ensureInjected(); // Create the template list. templateList = createTaskTemplateList(); initWidget(uiBinder.createAndBindUi(this)); nameEditor = EditorDecorator.create(nameField.asEditor(), nameViolation); driver.initialize(this); // Hide the template list if it isn't supported. if (!DragDropEventBase.isSupported()) { dockLayoutPanel.setWidgetSize(templateListContainer, 0); } // Create a new task or modify the current task when done is pressed. saveButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { if (presenter != null) { presenter.saveTask(); } } }); // Delete the current task or cancel when delete is pressed. deleteButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { if (presenter != null) { presenter.deleteTask(); } } }); // Add the form as a drop target. editForm.addDomHandler(new DragOverHandler() { public void onDragOver(DragOverEvent event) { // Highlight the name and notes box. nameField.getElement().getStyle().setBackgroundColor("#ffa"); notesEditor.getElement().getStyle().setBackgroundColor("#ffa"); } }, DragOverEvent.getType()); editForm.addDomHandler(new DragLeaveHandler() { public void onDragLeave(DragLeaveEvent event) { EventTarget eventTarget = event.getNativeEvent().getEventTarget(); if (!Element.is(eventTarget)) { return; } Element target = Element.as(eventTarget); if (target == editForm.getElement()) { // Un-highlight the name and notes box. nameField.getElement().getStyle().clearBackgroundColor(); notesEditor.getElement().getStyle().clearBackgroundColor(); } } }, DragLeaveEvent.getType()); editForm.addDomHandler(new DropHandler() { public void onDrop(DropEvent event) { // Prevent the default text drop. event.preventDefault(); // Un-highlight the name and notes box. nameField.getElement().getStyle().clearBackgroundColor(); notesEditor.getElement().getStyle().clearBackgroundColor(); // Fill in the form. try { // Get the template the from the data transfer object. DataTransfer dataTransfer = event.getNativeEvent().getDataTransfer(); int templateIndex = Integer.parseInt(dataTransfer.getData("text")); TaskProxy template = templateList.getVisibleItem(templateIndex); nameField.setValue(template.getName()); notesEditor.setValue(template.getNotes()); } catch (NumberFormatException e) { // The user probably dragged something other than a template. } } }, DropEvent.getType()); }