Skip to content

Commit

Permalink
SWC-7064 - Use elemental2 models for JsInterop
Browse files Browse the repository at this point in the history
  • Loading branch information
nickgros committed Oct 24, 2024
1 parent f4320a4 commit 112eebf
Show file tree
Hide file tree
Showing 35 changed files with 1,182 additions and 597 deletions.
14 changes: 13 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -950,7 +950,19 @@
<dependency>
<groupId>com.google.jsinterop</groupId>
<artifactId>base</artifactId>
<version>1.0.0</version>
<version>1.0.1</version>
</dependency>

<dependency>
<groupId>com.google.elemental2</groupId>
<artifactId>elemental2-core</artifactId>
<version>1.2.2</version>
</dependency>

<dependency>
<groupId>com.google.elemental2</groupId>
<artifactId>elemental2-dom</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package org.sagebionetworks.web.client;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.rpc.AsyncCallback;
import elemental2.dom.FileList;
import java.util.List;
import org.sagebionetworks.repo.model.EntityHeader;
import org.sagebionetworks.web.client.mvp.AppPlaceHistoryMapper;
Expand Down Expand Up @@ -120,7 +120,7 @@ public void setAppPlaceHistoryMapper(

void initializeToastContainer();

void setDropZoneHandler(CallbackP<JavaScriptObject> fileListCallback);
void setDropZoneHandler(CallbackP<FileList> fileListCallback);

void clearDropZoneHandler();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import static org.sagebionetworks.web.shared.WebConstants.REPO_SERVICE_URL_KEY;

import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.UmbrellaException;
Expand All @@ -19,6 +18,7 @@
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.datepicker.client.CalendarUtil;
import com.google.inject.Inject;
import elemental2.dom.FileList;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
Expand Down Expand Up @@ -60,7 +60,7 @@ public class GlobalApplicationStateImpl implements GlobalApplicationState {
private DateTimeUtils dateTimeUtils;
private SynapseJavascriptClient jsClient;
private SessionStorage sessionStorage;
private CallbackP<JavaScriptObject> fileListCallback;
private CallbackP<FileList> fileListCallback;
private SynapseProperties synapseProperties;
private PortalGinInjector ginInjector;
private final OneSageUtils oneSageUtils;
Expand Down Expand Up @@ -459,7 +459,7 @@ public boolean isDragAndDropListenerSet() {
return fileListCallback != null;
}

public void onDrop(JavaScriptObject fileList) {
public void onDrop(FileList fileList) {
if (isDragAndDropListenerSet()) {
fileListCallback.invoke(fileList);
}
Expand Down Expand Up @@ -494,53 +494,53 @@ private static final native void _initializeDragDrop(
Element dropZone,
Element rootPanel
) /*-{
try {
function showDropZone() {
dropZone.style.display = "block";
}
function hideDropZone() {
dropZone.style.display = "none";
}
$wnd
.addEventListener(
'dragenter',
function(e) {
if (globalAppState.@org.sagebionetworks.web.client.GlobalApplicationStateImpl::isDragAndDropListenerSet()()) {
showDropZone();
}
});
function allowDrag(e) {
e.dataTransfer.dropEffect = 'copy';
e.preventDefault();
}
function handleDrop(e) {
e.preventDefault();
hideDropZone();
globalAppState.@org.sagebionetworks.web.client.GlobalApplicationStateImpl::onDrop(Lcom/google/gwt/core/client/JavaScriptObject;)(e.dataTransfer.files);
}
dropZone.addEventListener('dragenter', allowDrag);
dropZone.addEventListener('dragover', allowDrag);
dropZone.addEventListener('drop', handleDrop);
//if files are dropped into the root panel, then ignore the event (do not open file contents if user does not have the upload dialog open).
rootPanel.addEventListener('drop', function(e) {
e.preventDefault();
});
rootPanel.addEventListener('dragenter', allowDrag);
rootPanel.addEventListener('dragover', allowDrag);
} catch (err) {
console.error(err);
}
}-*/;
try {
function showDropZone() {
dropZone.style.display = "block";
}
function hideDropZone() {
dropZone.style.display = "none";
}
$wnd
.addEventListener(
'dragenter',
function(e) {
if (globalAppState.@org.sagebionetworks.web.client.GlobalApplicationStateImpl::isDragAndDropListenerSet()()) {
showDropZone();
}
});
function allowDrag(e) {
e.dataTransfer.dropEffect = 'copy';
e.preventDefault();
}
function handleDrop(e) {
e.preventDefault();
hideDropZone();
globalAppState.@org.sagebionetworks.web.client.GlobalApplicationStateImpl::onDrop(Lelemental2/dom/FileList;)(e.dataTransfer.files);
}
dropZone.addEventListener('dragenter', allowDrag);
dropZone.addEventListener('dragover', allowDrag);
dropZone.addEventListener('drop', handleDrop);
//if files are dropped into the root panel, then ignore the event (do not open file contents if user does not have the upload dialog open).
rootPanel.addEventListener('drop', function(e) {
e.preventDefault();
});
rootPanel.addEventListener('dragenter', allowDrag);
rootPanel.addEventListener('dragover', allowDrag);
} catch (err) {
console.error(err);
}
}-*/;

@Override
public void setDropZoneHandler(CallbackP<JavaScriptObject> fileListCallback) {
public void setDropZoneHandler(CallbackP<FileList> fileListCallback) {
this.fileListCallback = fileListCallback;
}

Expand Down
Loading

0 comments on commit 112eebf

Please sign in to comment.