Skip to content

Commit 22719ea

Browse files
authored
Merge pull request #1 from reactome-pwp/dev
Merging latest features
2 parents cfaf64d + e45ce06 commit 22719ea

81 files changed

Lines changed: 2041 additions & 179 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<groupId>org.reactome.web.pwp</groupId>
99
<artifactId>browser</artifactId>
1010
<packaging>war</packaging>
11-
<version>3.6.0</version>
11+
<version>3.6.1</version>
1212
<name>Reactome Pathway Portal</name>
1313

1414
<description>
@@ -44,11 +44,11 @@
4444
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4545

4646
<reactome.web.analyitics>2.0.1</reactome.web.analyitics>
47-
<reactome.web.analysis-client>1.4.0</reactome.web.analysis-client>
47+
<reactome.web.analysis-client>1.4.2-SNAPSHOT</reactome.web.analysis-client>
4848
<reactome.web.carrousel>1.0.2</reactome.web.carrousel>
49-
<reactome.web.diagram>3.6.0</reactome.web.diagram>
50-
<reactome.web.fireworks>1.8.0</reactome.web.fireworks>
51-
<reactome.web.model>2.0.2-SNAPSHOT</reactome.web.model>
49+
<reactome.web.diagram>3.6.2</reactome.web.diagram>
50+
<reactome.web.fireworks>1.8.2</reactome.web.fireworks>
51+
<reactome.web.model>2.0.4</reactome.web.model>
5252
<reactome.web.pdb>2.3.1</reactome.web.pdb>
5353
<reactome.web.chebi>1.1.0</reactome.web.chebi>
5454
<reactome.web.rhea>1.3.1</reactome.web.rhea>

src/main/java/org/reactome/web/pwp/client/AppController.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import org.reactome.web.pwp.client.viewport.welcome.Welcome;
7272
import org.reactome.web.pwp.client.viewport.welcome.WelcomeDisplay;
7373
import org.reactome.web.pwp.client.viewport.welcome.WelcomePresenter;
74+
import org.reactome.web.pwp.model.client.classes.DBInfo;
7475

7576
import java.util.LinkedList;
7677
import java.util.List;
@@ -80,20 +81,24 @@
8081
*/
8182
public class AppController implements BrowserReadyHandler {
8283

84+
private final DBInfo dbInfo;
8385
private final EventBus eventBus;
8486
private final IsWidget main;
8587

86-
public AppController() {
88+
public AppController(DBInfo dbInfo) {
89+
this.dbInfo = dbInfo;
8790
this.printMessage();
8891
this.eventBus = new BrowserEventBus();
8992
this.eventBus.addHandler(BrowserReadyEvent.TYPE, this);
9093
this.initManager();
9194
this.main = getDesktopBrowser();
95+
96+
9297
}
9398

9499
public void go(HasWidgets container){
95100
container.add(this.main.asWidget());
96-
this.eventBus.fireEventFromSource(new BrowserReadyEvent(), this);
101+
this.eventBus.fireEventFromSource(new BrowserReadyEvent(dbInfo), this);
97102
}
98103

99104
@Override
@@ -144,7 +149,7 @@ private IsWidget getTopPanel(){
144149

145150
FlowPanel topPanel = new FlowPanel();
146151
topPanel.setStyleName("elv-Top-Panel");
147-
topPanel.add(new LogoPanel());
152+
topPanel.add(new LogoPanel(dbInfo));
148153
topPanel.add(species);
149154
topPanel.add(layoutSelector);
150155
topPanel.add(tour);

src/main/java/org/reactome/web/pwp/client/Browser.java

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,82 @@
33
import com.google.gwt.core.client.EntryPoint;
44
import com.google.gwt.core.client.JavaScriptException;
55
import com.google.gwt.core.client.Scheduler;
6+
import com.google.gwt.dom.client.Style;
67
import com.google.gwt.user.client.DOM;
78
import com.google.gwt.user.client.Window;
89
import com.google.gwt.user.client.ui.RootLayoutPanel;
910
import org.reactome.web.pwp.client.common.utils.Console;
1011
import org.reactome.web.pwp.client.manager.state.token.Token;
1112
import org.reactome.web.pwp.client.manager.title.event.TitleChangedEvent;
13+
import org.reactome.web.pwp.model.client.classes.DBInfo;
14+
import org.reactome.web.pwp.model.client.common.ContentClientHandler;
15+
import org.reactome.web.pwp.model.client.content.ContentClient;
16+
import org.reactome.web.pwp.model.client.content.ContentClientError;
1217

1318

1419
/**
1520
* Entry point classes define <code>onModuleLoad()</code>.
1621
*/
17-
public class Browser implements EntryPoint {
22+
public class Browser implements EntryPoint, ContentClientHandler.DatabaseInfo {
1823

1924
public static final String VERSION = "3.6";
2025
public static final Boolean BETA = false;
2126

2227
public static boolean VERBOSE = true;
28+
private AppController appViewer;
2329

2430
/**
2531
* This is the entry point method.
2632
*/
2733
public void onModuleLoad() {
2834
initConfig();
35+
ContentClient.getDatabaseInformation(this);
36+
}
37+
38+
@Override
39+
public void onDatabaseInfoLoaded(DBInfo dbInfo) {
2940
Scheduler.get().scheduleDeferred(() -> {
30-
AppController appViewer = new AppController();
41+
appViewer = new AppController(dbInfo);
3142
appViewer.go(RootLayoutPanel.get());
3243
removeLoadingMessage();
3344
});
3445
}
3546

36-
private void initConfig(){
47+
@Override
48+
public void onContentClientException(Type type, String message) {
49+
showErrorMessage();
50+
}
51+
52+
@Override
53+
public void onContentClientError(ContentClientError error) {
54+
showErrorMessage();
55+
}
56+
57+
private void initConfig() {
3758
String hostName = Window.Location.getHostName();
3859
Browser.VERBOSE = (hostName.equals("localhost") || hostName.equals("127.0.0.1"));
3960
TitleChangedEvent.REPORT = false;
4061
Token.DEFAULT_SPECIES_ID = 48887L; //Homo sapiens
4162
Token.DELIMITER = "&";
4263
}
4364

44-
private void removeLoadingMessage(){
65+
private void removeLoadingMessage() {
4566
try {
46-
if(DOM.getElementById("appLoadMessage")!=null) {
67+
if (DOM.getElementById("appLoadMessage") != null) {
4768
DOM.getElementById("appLoadMessage").removeFromParent();
4869
}
49-
}catch (JavaScriptException exception){
70+
} catch (JavaScriptException exception) {
71+
Console.error(exception.getMessage(), this);
72+
}
73+
}
74+
75+
private void showErrorMessage() {
76+
removeLoadingMessage();
77+
try {
78+
if (DOM.getElementById("appErrorMessage") != null) {
79+
DOM.getElementById("appErrorMessage").getStyle().setDisplay(Style.Display.BLOCK);
80+
}
81+
} catch (JavaScriptException exception) {
5082
Console.error(exception.getMessage(), this);
5183
}
5284
}

src/main/java/org/reactome/web/pwp/client/common/events/BrowserReadyEvent.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,20 @@
22

33
import com.google.gwt.event.shared.GwtEvent;
44
import org.reactome.web.pwp.client.common.handlers.BrowserReadyHandler;
5+
import org.reactome.web.pwp.model.client.classes.DBInfo;
56

67
/**
78
* @author Antonio Fabregat <fabregat@ebi.ac.uk>
89
*/
910
public class BrowserReadyEvent extends GwtEvent<BrowserReadyHandler> {
1011
public static final Type<BrowserReadyHandler> TYPE = new Type<>();
1112

13+
private DBInfo dbInfo;
14+
15+
public BrowserReadyEvent(DBInfo dbInfo) {
16+
this.dbInfo = dbInfo;
17+
}
18+
1219
@Override
1320
public Type<BrowserReadyHandler> getAssociatedType() {
1421
return TYPE;
@@ -19,6 +26,10 @@ protected void dispatch(BrowserReadyHandler handler) {
1926
handler.onBrowserReady(this);
2027
}
2128

29+
public DBInfo getDbInfo() {
30+
return dbInfo;
31+
}
32+
2233
@Override
2334
public String toString() {
2435
return "BrowserReadyEvent{}";

src/main/java/org/reactome/web/pwp/client/details/common/widgets/button/IconButton.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.reactome.web.pwp.client.details.common.widgets.button;
22

3+
import com.google.gwt.dom.client.Style;
34
import com.google.gwt.event.dom.client.ClickHandler;
45
import com.google.gwt.resources.client.ImageResource;
56
import com.google.gwt.safehtml.shared.SafeHtml;
@@ -15,6 +16,7 @@
1516
public class IconButton extends Button {
1617
private FlowPanel fp;
1718
private Image image;
19+
private Image overlay;
1820
private InlineLabel label;
1921

2022
public IconButton(String text, ImageResource imageResource) {
@@ -47,6 +49,29 @@ public void setImage(ImageResource imageResource) {
4749
updateHTML();
4850
}
4951

52+
public void setOverlayIcon(ImageResource overlayIcon) {
53+
clearOverlayIcon();
54+
55+
overlay = new Image(overlayIcon);
56+
overlay.setHeight("15px");
57+
overlay.setWidth("auto");
58+
59+
Style style = overlay.getElement().getStyle();
60+
style.setPosition(Style.Position.ABSOLUTE);
61+
style.setRight(-4, Style.Unit.PX);
62+
style.setBottom(0, Style.Unit.PX);
63+
64+
fp.add(overlay);
65+
updateHTML();
66+
}
67+
68+
public void clearOverlayIcon() {
69+
if(overlay!=null) {
70+
overlay.removeFromParent();
71+
updateHTML();
72+
}
73+
}
74+
5075
private void updateHTML() {
5176
SafeHtml safeHtml = SafeHtmlUtils.fromSafeConstant(fp.toString());
5277
this.setHTML(safeHtml);

src/main/java/org/reactome/web/pwp/client/details/common/widgets/panels/DatabaseIdentifierPanel.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,26 @@ public DatabaseIdentifierPanel(DetailsPanel parentPanel, PhysicalEntity pe) {
4242
} else if (pe instanceof SimpleEntity){
4343
SimpleEntity se = pe.cast();
4444
re = se.getReferenceEntity();
45+
} else if (pe instanceof Drug) {
46+
Drug drug = pe.cast();
47+
re = drug.getReferenceEntity();
4548
}
4649

4750
if (re != null){
4851
this.reference = re.getDatabaseName();
4952
this.id = re.getIdentifier();
5053
this.url = re.getUrl();
5154
initialize();
55+
} else if (pe instanceof Complex) {
56+
//Links to the complex portal have been added as cross references for Complexes but
57+
//these do not have reference entity. This is a hack to accommodate this case
58+
for (DatabaseIdentifier identifier : pe.getCrossReference()) {
59+
this.reference = identifier.getDatabaseName();
60+
this.id = identifier.getIdentifier();
61+
this.url = identifier.getUrl();
62+
initialize();
63+
break;
64+
}
5265
} else {
5366
initWidget(new Label("No reference entity"));
5467
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package org.reactome.web.pwp.client.details.common.widgets.panels;
2+
3+
import com.google.gwt.dom.client.Style;
4+
import com.google.gwt.user.client.ui.*;
5+
import org.reactome.web.pwp.model.client.classes.DatabaseObject;
6+
import org.reactome.web.pwp.model.client.classes.Disease;
7+
import org.reactome.web.pwp.model.client.classes.Drug;
8+
import org.reactome.web.pwp.model.client.classes.ReferenceEntity;
9+
10+
import java.util.List;
11+
12+
/**
13+
* @author Antonio Fabregat <fabregat@ebi.ac.uk>
14+
*/
15+
public class DrugPanel extends DetailsPanel implements TransparentPanel {
16+
private Drug drug;
17+
18+
@SuppressWarnings("UnusedDeclaration")
19+
public DrugPanel(Drug drug) {
20+
this(null, drug);
21+
}
22+
23+
public DrugPanel(DetailsPanel parentPanel, Drug drug) {
24+
super(parentPanel);
25+
this.drug = drug;
26+
setLoaded(true); //EntityWithAccessionedSequence will always be passed as a fully loaded object
27+
initialize();
28+
}
29+
30+
private void initialize(){
31+
VerticalPanel vp = new VerticalPanel();
32+
vp.setWidth("100%");
33+
34+
if(this.drug.getReferenceEntity()!=null) vp.add(getExternalIdentifier(this.drug.getReferenceEntity()));
35+
36+
if(this.drug.getDisease()!=null) vp.add(getDiseasePanel(this.drug.getDisease()));
37+
38+
initWidget(vp);
39+
}
40+
41+
@Override
42+
public DatabaseObject getDatabaseObject() {
43+
return this.drug;
44+
}
45+
46+
private Widget getExternalIdentifier(ReferenceEntity re){
47+
InlineLabel label = new InlineLabel(re.getDatabaseName());
48+
Anchor link = new Anchor(re.getIdentifier(), re.getUrl(), "_blank");
49+
link.getElement().getStyle().setMarginLeft(10, Style.Unit.PX);
50+
51+
FlowPanel fp = new FlowPanel();
52+
fp.getElement().getStyle().setMarginBottom(10, Style.Unit.PX);
53+
fp.add(label);
54+
fp.add(link);
55+
return fp;
56+
}
57+
58+
private Widget getDiseasePanel(List<Disease> diseaseList){
59+
VerticalPanel vp = new VerticalPanel();
60+
vp.getElement().getStyle().setMarginBottom(10, Style.Unit.PX);
61+
vp.setWidth("99%");
62+
63+
vp.add(new Label("Indicated for:"));
64+
for (Disease disease : diseaseList) {
65+
Widget pPanel = new ExternalOntologyPanel(this, disease);
66+
pPanel.getElement().getStyle().setMarginLeft(15, Style.Unit.PX);
67+
vp.add(pPanel);
68+
}
69+
70+
return vp;
71+
}
72+
73+
}

src/main/java/org/reactome/web/pwp/client/details/common/widgets/panels/ExternalOntologyPanel.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ public void setReceivedData(DatabaseObject data) {
6767
VerticalPanel vp = new VerticalPanel();
6868
vp.setWidth("98%");
6969

70+
vp.add(getExternalIdentifier(this.externalOntology));
71+
7072
vp.add(getDefinitionPanel(this.externalOntology.getDefinition()));
71-
// vp.add(getIdentifierPanel(this.disease.getIdentifier()));
7273

7374
if(!this.externalOntology.getInstanceOf().isEmpty())
7475
vp.add(getInstanceOfPanel(this.externalOntology.getInstanceOf()));
@@ -99,20 +100,17 @@ private Widget getDefinitionPanel(String definition){
99100
return vp;
100101
}
101102

102-
// private Widget getIdentifierPanel(String identifier){
103-
// HorizontalPanel hp = new HorizontalPanel();
104-
// hp.getElement().getStyle().setMarginBottom(10, Style.Unit.PX);
105-
//
106-
// Label title = new Label("Identifier:");
107-
// Style titleStyle = title.getElement().getStyle();
108-
// titleStyle.setFontWeight(Style.FontWeight.BOLD);
109-
// titleStyle.setMarginRight(5, Style.Unit.PX);
110-
// hp.add(title);
111-
//
112-
// hp.add(new Label(identifier));
113-
//
114-
// return hp;
115-
// }
103+
private Widget getExternalIdentifier(ExternalOntology eo){
104+
InlineLabel label = new InlineLabel(eo.getDatabaseName());
105+
Anchor link = new Anchor(eo.getIdentifier(), eo.getUrl(), "_blank");
106+
link.getElement().getStyle().setMarginLeft(10, Style.Unit.PX);
107+
108+
FlowPanel fp = new FlowPanel();
109+
fp.getElement().getStyle().setMarginBottom(10, Style.Unit.PX);
110+
fp.add(label);
111+
fp.add(link);
112+
return fp;
113+
}
116114

117115
private Widget getInstanceOfPanel(List<ExternalOntology> instances){
118116
VerticalPanel vp = new VerticalPanel();

0 commit comments

Comments
 (0)